Linux 虚存 linux2.6内核特性
一、大型页面的支持
当代计算机体系结构大都支持多种页面大小,例如,IA-32体系结构支持4KB或4MB的页面, Linux操作系统只是将大型页面用于映射实际的内核映像。大型页面的使用主要是为了改进高性能计算(HPC)以及其他内存密集型应用的性能。任何占用大量虚存的访存密集型应用程序都可以使用大型页面来改进性能(Linux使用 2MB或 4MB的大型页面, AIX使用 16MB的大型页面,而 Solaris使用的页面大小为 4MB)。︰6的比率应是合理的)。增加这个时间长度以及频率间隔(但仍遵循 1︰6比率)可能有利于拥有内核密集型工作负荷的大型系统,因为后台回写操作可能会干扰到工作负荷自身的性能行为。
五、CPU调度器
Linux为每个任务分配一个静态优先级,可以通过 nice()接口对其进行修改。 Linux拥有一组优先级类型,用以区别实时任务和分时任务。优先级的取值越低, 任务的逻辑优先级或者换句话说其综合重要性(general importance)就越高。当阐述优先级提高或降低时,在这个上下文中的讨论总是指代逻辑优先级。实时任务的优先级总是高于分时任务。
先前版本的 Linux调度器使用了优度(goodness)概念来确定下一个待执行的线程。所有可运行的任务都保持在单个运行队列上,该队列是处于 TSRUN(TASK_RUNNABLE)状态中的线程所形成的一个链表。 Linux 2.6内核中将唯一的运行队列锁替换为基于每个CPU的锁,从而确保在 SMP系统上具有更好的扩展性。该 O(1)调度器所采用的基于 CPU的运行队列机制将运行队列(按优先级顺序)分解成许多桶(bucket),并使用位图来标识拥有可运行任务的那些桶。如果要定位下一个待执行任务,需要读取该位图以标识出第一个具有可运行任务的桶并选择该桶的运行队列中的第一个任务。
每个CPU的运行队列由两个任务列表向量组成, 称为活跃向量(active vector)和超时向量(expired vector)。每个向量索引代表了拥有各自优先级的可运行任务的一个列表。一个任务在执行一段时间后,会从活跃列表移至超时列表,这样确保了所有可运行任务都能够获得执行机会。当该活跃数组为空时, 则通过修改指针来交换超时向量和活跃向量。
时,调度器再次补充时间片数据,重新计算有效优先级,并将该任务重新排队到活跃向量(若该任务被归类为交互式的)或超时向量(若该任务被看作是非交互式的)中。 此时, 系统会从活跃数组中分派另一个任务。 该场景确保了在任何超时任务获得再次运行的机会前,首先执行活跃数组中的任务。如果一个任务被取消调度的话,则在唤醒时不会补充时间片数据,但是其有效优先级可能由于任何 accumulated休眠时间而已经发生变化。如果所有可运行任务都耗尽了自己的时间片并已被移至超时列表中,则应交换超时和活跃向量。 这种技术使得该 O(1)调度器不需要遍历一个可能很长的任务列表(这是 Linux 2.4内核调度器中所需的操作)。这种新型设计的问题是,由于任何潜在的交互行为,以下场景可能会出现:活跃队列继续拥有未被移入超时列表的可运行任务。有 些任务可能因为等待 CPU时间而停止。为了避免这个问题, 首先移入超时列表中的任务要老于 STARVATION_LIMIT(10秒),并且应交换活跃数组和超时数组。
Linux 虚存 linux2.6内核特性的更多相关文章
- Linux 虚存的性能问题
虚存子系统是所有 UNIX 系统的核心组件.下面讨论虚存系统的实现及其对操作系统中几乎其他所有子系统的作用和影响.首先详细说明一些基本的内存管理问题:然后具体分析 Linux 操作系统如何实施虚存管理 ...
- linux top命令看到的实存(RES)与虚存(VIRT)分析
近期在公司中解决程序使用的内存高问题,将一部分之前无法回收的内存进行了回收,实现降内存效果(降实存). 在统计效果时, QA问是统计RES(实存)还是VIRT(虚存). 在网上学习看了一些博客,这里自 ...
- linux (centos) 单机50w+链接 内核参数配置
1 突破系统最大fd 查看当前文件描述符的限制数目的命令: ulimit -n .修改文件描述符的限制数目 2.1 临时改变当前会话: ulimit -n 2.2 永久变更需要下面两个步骤: ./ ...
- Linux2.6 内核的 Initrd 机制解析
文章来自:www.ibm.com/developerworks/cn/linux/l-k26initrd/ 1.什么是 Initrd initrd 的英文含义是 boot loader initial ...
- Linux2.6 内核的 Initrd 机制解析(转)
from: https://www.ibm.com/developerworks/cn/linux/l-k26initrd/ 简介: Linux 的 initrd 技术是一个非常普遍使用的机制,lin ...
- Linux2.6内核实现的是NPTL
NPTL是一个1×1的线程模型,即一个线程对于一个操作系统的调度进程,优点是非常简单.而其他一些操作系统比如Solaris则是MxN的,M对应创建的线程数,N对应操作系统可以运行的实体.(N<M ...
- 专家解读Linux操作系统内核中的GCC特性
专家解读Linux操作系统内核中的GCC特性 Linux内核使用GNU Compiler Collection (GCC)套件的几个特殊功能.这些功能包括提供快捷方式和简化以及向编译器提供优化提示 ...
- 各大浏览器内核特性及对应的Browserhacks举例
1.浏览器内核指的是什么? 简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件 而通常所说的浏览器内核指的是页面渲染引擎(rendering engine). 2.渲染引擎 The r ...
- linux下TCP/IP及内核参数优化调优(转)
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
随机推荐
- POJ-1995 Raising Modulo Numbers---快速幂模板
题目链接: https://vjudge.net/problem/POJ-1995 题目大意: 求一堆ab的和模上m 思路: 直接上模板 #include<iostream> #inclu ...
- ConstraintLayout布局介绍.md
一.介绍 ConstraintLayout是一个ViewGroup允许您以灵活的方式定位和调整窗口小部件的窗口.从api9开始支持.继承自viewGroup; 二.具体使用 这个控件的具体分类主要有如 ...
- Redis管理之持久化
Redis的一大重要特征就是支持持久化. Redis提供了两种不同的持久化方式:RDB和AOF. RDB持久化可以在指定的时间间隔内生成数据集的快照.由于是定期的生成数据集的快照,所以,如果服务器出现 ...
- 百度URL 部分参数
[Baidu URL的部分参数] 1.Baidu Form表单如下: 2.部分参数解析 wd 查询关键字,就是你要搜索的内容. bs 上一次搜索的词或者内容: rn 搜索结果页每页显示的数目,默认 ...
- [HAOI2015]数字串拆分
题目描述 你有一个长度为n的数字串.定义f(S)为将S拆分成若干个1~m的数的和的方案数,比如m=2时,f(4)=5,分别为4=1+1+1+1你可以将这个数字串分割成若干个数字(允许前导0),将他们加 ...
- 【NOIP模拟赛】总结
题目描述 输入 第一行是5个正整数,n,m,k,S,T,分别代表无向图点数,边数,蝙蝠的数量,二小姐所在起点的编号,目标点的编号. 第二行是k个正整数,分别代表大小姐每个蝙蝠所在的起点的编号.接下来有 ...
- hdu 5439(找规律)
The sequence is generated by the following scheme. 1. First, write down 1, 2 on a paper. 2. The 2nd ...
- UVA 1451 Average
A DNA sequence consists of four letters, A, C, G, and T. The GC-ratio of a DNA sequence is the numbe ...
- 初遇 Asp.net MVC 数据库依赖缓存那些事儿
问题背景: 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法: 我请求的这段数据它是一段相对比较固定的 ...
- Android绘制文字时垂直居中
canvas.drawText(String text, float x, float y, Paint paint); 是Android中绘制文本的方法,其中的x代表文字绘制时在X轴的起始点,而y是 ...