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 ...
随机推荐
- hive-jdbc获取查询日志慢的问题发现与解决
1.问题描述: 数据平台的临时查询一直有一个问题,就是日志获取太慢了,每次都是和结果一块出来的,这就非常影响用户的体验,半天都没任何输出.另一个是Beeline客户端不一致,beeline客户端每次都 ...
- 四,前端---constructor与prototype
这里对于constructor 和 prototype做一个简单的介绍,旨在让大家有一个简单的了解与认识 1:定义与用法 prototype:属性使您有能力向对象添加属性和方法. constructo ...
- 关于myeclipse启动报错:An internal error has occurred. java.lang.NullPointerException解决办法
启动myeclipse报错,百度了一下网友处理方式,对比日志,发现现在已有的教程真的是巨人坑: 如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间 ...
- JavaScript数据结构与算法(二) 队列的实现
TypeScript方式源码 class Queue { items = []; public enqueue(element) { this.items.push(element); } publi ...
- 机器学习技法:16 Finale
Roadmap Feature Exploitation Techniques Error Optimization Techniques Overfitting Elimination Techni ...
- 领域驱动设计(DDD)笔记(一)
最近在看<领域驱动设计>这本书,准备写点学习笔记博文记录系列.记录本书中的要点和疑惑,不定期更新!先放张MarginNote的图: Aggregate 每个Aggregate 都有一 ...
- [HAOI2006]旅行
题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也 ...
- 伊布(ib)
[问题描述]ib 被困在了一个美术馆里,她需要收集美术馆内的每种颜料才能获得逃出美术馆的钥匙美术馆由 n*m 的房间构成,每个房间里有一种颜料,解锁进入后就可以收集.有的房间不能解锁,如果解锁的话会直 ...
- ●BZOJ 1042 [HAOI2008]硬币购物
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1042 题解: 容斥原理,dp预处理首先跑个无限物品的背包dp求出dp[i]表示在四种物品都有 ...
- Codeforces #Round 406(Div.2)
来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------- 大家好,我是一个假人.在学习O ...