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 ...
随机推荐
- CWMP开源代码研究——stun的NAT穿透
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 参考: http://www.cnblogs.com/myblesh/p/6259765.htm ...
- Linux:nohub启动后台永久进程
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号.在注销后使用 nohup 命令运行后台中的程序.要运行后台中的 nohup 命令,添加 ...
- cookie的实现原理
cookie技术通过在请求和响应报文中写入cookie信息来控制客户点的状态 cookie会根据从服务器端发送的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie 当下 ...
- PHP 通过fsockopen函数获取远程网页源码
<?php $fp = fsockopen("www.baidu.com", 80, &$errno, &$errstr, 10); if(!$fp) { e ...
- Jenkins: Can't connect to Docker daemon解决办法
Jenkins安装后首次使用报错: Jenkins: Can't connect to Docker daemon 解决办法: 参照StackOverflow 添加jenkins用户到dockergr ...
- Java图形界面学习---------简易登录界面
/** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...
- hadoop中集群节点ID不一致( java.io.IOException: Incompatible clusterIDs )
- java开发----自定义对象,重写equals方法
javaweb开发中,用到了好多自定义对象,这时候如果不重写equals方法,很多时候都会返回false, 因此我们必须习惯重写这个方法. 重点: 1.equals比较俩对象时比较的是对象引用是否指向 ...
- 基于webpack的React项目搭建(三)
前言 搭建好前文的开发环境,已经可以进行开发.然而实际的项目中,不同环境有着不同的构建需求.这里就将开发环境和生产环境的配置单独提取出来,并做一些简单的优化. 分离不同环境公有配置 不同环境虽然有不同 ...
- [SHOI2011]双倍回文
Description Input 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. Output 输出文件只有一行,即:输入数据中字符串的最长 ...