14内核同步(2)
- 格式:ppt
- 大小:458.50 KB
- 文档页数:23
【转】多核CPU运⾏模式多核CPU运⾏模式主要有以下三种: •⾮对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运⾏⼀个独⽴的操作系统或同⼀操作系统的独⽴实例(instantiation)。
•对称多处理(Symmetric multiprocessing,SMP)——⼀个操作系统的实例可以同时管理所有CPU内核,且应⽤并不绑定某⼀个内核。
•混合多处理(Bound multiprocessing,BMP)——⼀个操作系统的实例可以同时管理所有CPU内核,但每个应⽤被锁定于某个指定的核⼼。
1、⾮对称多处理(AMP) AMP给开发者提供了⼀个与传统单核系统相类似的运⾏环境,使得开发者已有的⼀系列经验和知识可以继续加以利⽤;同时,这也为⽼程序的移植提供了相当⼤的便利性。
AMP分为同构(homogeneous)和异构(heterogeneous)。
前者是指所有内核运⾏同⼀种类型和版本的,后者则是指每个内核运⾏不同类型或版本的操作系统(⽐如⼀个内核运⾏QNX Neutrino RT,⽽另⼀个内核运⾏Linux)。
在同构环境中,开发⼈员只要选择⼀个可提供分布式编程模式的操作系统,就能最⼤化地利⽤多核,允许某个内核上的应⽤程序透明地与另⼀个内核上的应⽤/系统服务(如设备、协议堆栈)进⾏,但不会有传统IPC机制所造成的⾼CPU占有率。
异构环境的要求有些不同。
在这种环境下,开发⼈员要么执⾏专有的通信协议,要么选择可供IPC共享相同架构(如基于IP)的两个操作系统。
为了避免资源冲突,两个操作系统还需要通过⼀个标准机制来访问被共享的硬件。
在AMP系统中,⼀个进程(process)总是运⾏在同⼀个内核中,即使其他内核处于空闲状态。
结果会导致⼀个内核要么没有被充分利⽤,要么被利⽤过度。
为了解决这个问题,系统会允许应⽤程序在内核间动态迁移。
然⽽,这样就需要对状系统信息进⾏相当复杂的检测。
浅谈linux性能调优之十七:进程绑定与中断绑定1.使用taskset设置CPU亲和性taskset搜索并设定运行进程的CPU亲和性(根据进程ID)。
它还可用于启动给定CPU亲和性的进程,这样就可将指定的进程与指定的CPU或者一组CPU捆绑CPU 亲和性使用位掩码表示。
最低位对应第一个逻辑 CPU,且最高位对应最后一个逻辑CPU。
这些掩码通常是十六进制,因此0x00000001 代表处理器 1,0x00000003 代表处理器 3 。
要设定运行进程的 CPU 亲和性,请执行以下命令,使用处理器或者您要捆绑到的处理器掩码替换 mask,使用您要更改亲和性的进程的进程 ID 替换 pid。
# taskset -p mask pid要启动给定亲和性的进程,请运行以下命令,使用处理器或者您要捆绑的处理器的掩码替换 mask,使用程序、选项以及您要运行的程序参数替换 program。
# taskset mask -- program与其将处理器指定为位码,您还可以使用 -c 选项提供逗号分开的独立处理器,或者一组处理器列表,类似如下:# taskset -c 0,5,7-9 -- myprogram有关 taskset 的详情请参考 man page:man taskset。
2.硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。
现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。
中断请求(IRQ)是用于服务的请求,在硬件层发出。
可使用专用硬件线路或者跨硬件总线的信息数据包(消息信号中断,MSI)发出中断。
启用中断后,接收IRQ 后会提示切换到中断上下文。
内核中断调度代码会搜索 IRQ 号码机器关联的注册中断服务路由(ISR)列表,并按顺序调用 ISR。
LTP工具说明1LTP测试套件 (3)1.1简介 (3)1.2源目录结构 (3)2LTP安装 (4)2.1下载 (4)2.2编译 (4)2.3安装说明 (5)3LTP测试套件结构说明 (6)3.1概述 (6)3.2目录介绍 (6)3.3LTP执行原理 (6)4LTP测试套件测试内容 (7)4.1LTP测试套件测试内容 (7)4.1.1commands (7)4.1.2kernel (7)4.1.3kdump (8)4.1.4network (8)4.1.5realtime (8)4.1.6open_posix_testsuite (8)4.1.7misc (8)4.2测试方法说明 (8)4.2.1commands模块内容描述及实现方法 (8)4.2.2kernel (10)4.2.3network (15)4.2.4open_posix_testsuite (17)4.2.5realtime (18)5LTP测试套件配置详细 (19)5.1networktests.sh脚本配置 (19)5.2networkstress.sh配置 (23)5.3open_posix_testsuite测试套件 (28)5.4realtime配置 (29)5.5mm脚本的配置 (30)5.6io脚本配置 (30)5.7filecaps的配置 (30)5.8tpm_tools的配置 (31)5.9tcore的配置 (31)5.10io_floppy的配置 (31)5.11io_cd 的配置 (32)5.12cpuhotplug的配置 (32)5.13adp.sh的配置 (33)5.14autofs1.sh和autofs4.sh的配置 (34)5.15exportfs.sh的配置 (34)5.16isofs.sh的配置 (34)5.17ltpdmmapper.sh的配置 (35)5.18ltpfslvm.sh的配置及要求 (36)5.19ltpfsnolvn.sh的配置及要求 (36)5.20ltp-scsi_debug.sh的配置及要求 (37)5.21sysfs.sh的配置及要求 (37)5.22rpctirpc的配置及要求 (37)5.23test_selinux.sh的配置及要求 (39)5.24smack的配置和要求 (40)5.25perfcounters的配置及要求 (41)5.26can的配置及要求 (41)5.27test_robind.sh的配置 (42)6LTP测试套件使用说明 (43)6.1概述 (43)6.2测试方法 (44)6.2.1初始测试 (44)6.2.2压力测试 (47)1LTP测试套件1.1简介LTP(Linux Test Project)是SGI、IBM、OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性、健壮性和稳定性。
Linux 同步方法剖析内核原子,自旋锁和互斥锁你也许接触过并发(concurrency)、临界段(critical section)和锁定,不过怎么在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的锁定机制,包括原子运算符(atomic operator)、自旋锁(spinlock)、读/写锁(reader/writer lock)和内核信号量(kernel semaphore)。
本文还探讨了每种机制最适合应用到哪些地方,以构建安全高效的内核代码。
本文讨论了 Linux 内核中可用的大量同步或锁定机制。
这些机制为 2.6.23 版内核的许多可用方法提供了应用程式接口(API)。
不过在深入学习 API 之前,首先需要明白将要解决的问题。
并发和锁定当存在并发特性时,必须使用同步方法。
当在同一时间段出现两个或更多进程并且这些进程彼此交互(例如,共享相同的资源)时,就存在并发现象。
在单处理器(uniprocessor,UP)主机上可能发生并发,在这种主机中多个线程共享同一个 CPU 并且抢占(preemption)创建竞态条件。
抢占通过临时中断一个线程以执行另一个线程的方式来实现 CPU 共享。
竞态条件发生在两个或更多线程操纵一个共享数据项时,其结果取决于执行的时间。
在多处理器(MP)计算机中也存在并发,其中每个处理器中共享相同数据的线程同时执行。
注意在 MP 情况下存在真正的并行(parallelism),因为线程是同时执行的。
而在 UP 情形中,并行是通过抢占创建的。
两种模式中实现并发都较为困难。
Linux 内核在两种模式中都支持并发。
内核本身是动态的,而且有许多创建竞态条件的方法。
Linux 内核也支持多处理(multiprocessing),称为对称多处理(SMP)。
临界段概念是为解决竞态条件问题而产生的。
一个临界段是一段不允许多路访问的受保护的代码。
这段代码能操纵共享数据或共享服务(例如硬件外围设备)。
内核同步机制-RCU同步机制⽬录[]RCU同步机制RCU介绍RCU(Read-Copy Update)是⼀种极端的⾮对称读/写同步机制,基本点是允许读操作在没有任何锁及原⼦操作的情况下进⾏。
这意味着在更新操作进⾏的时候读操作也可能在运⾏。
读者临界代码不需要承担任何同步开销,不需要锁,不需要原⼦指令,在⼤多数平台,还不需要内存屏障指令。
因此,仅读的⼯作负载可以获取近乎理想的执⾏性能。
写者临界代码必须承担主要的同步开锁,为了适应读者的临界代码要求,写者必须延迟销毁数据结构和维护数据结构的多个版本,必须使⽤同步机制,如:加锁、提供排序的更新。
读者必须提供信号,让写者决定何时完成数据结构销毁操作是完全的,但该信号可能被延迟,允许⼀个单信号操作服务多个读者RCU临界代码。
RCU通常⽤⾮原⼦操作地增加⼀个本地计数器的⽅法发信号给写者,该⽅法开销很⼩。
⼀种特殊的垃圾回收器⽤于观察读者发给写者的信号,⼀旦所有护者已发信号表⽰可以安全销毁时,垃圾回收器才执⾏销毁操作。
垃圾回收器通常以类似于屏障计算的⽅式实现,或者在NUMA系统⽤⼀个联合树的形式实现。
RCU通过延迟写操作来提⾼同步性能。
系统中数据读取操作远多于写操作,⽽rwlock读写锁机制在SMP对称多处理器环境下随着处理机增多性能会迅速下降,RCU“读拷贝更新”机制改善了这种情况,RCU技术的核⼼是写操作分为“写”和“更新”两步,允许读操作在任何时候⽆阻碍访问,当系统有写操作时,更新动作⼀直延迟到对该数据的所有读操作完成为⽌。
RCU通过延迟写操作来提⾼同步性能。
下⾯⽤⼀个具体的例⼦具体的例⼦说明RCU是如何延迟更新的。
样例:使⽤RCU机制更新单向链表有两个线程访问⼀个单向链表,在线程1对元素B做没有锁的读时线程0将更新元素B。
见图1所⽰。
此时,线程0不能简单地修改元素B,因为这将⼲扰线程1对元素B的访问。
作为代替,线程0拷贝元素B到B’,修改B’,发出内存屏障操作,接着,元素A的next指针指到B’。
操作系统总复习及相关习题第一章引论名词解释1操作系统操作系统是管理和控制计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。
2管态当执行操作系统程序时,处理机所处的状态3目态当执行普通用户程序时,处理机所处的状态。
4多道程序设计在这种设计技术下,内存中能同时存放多道程序,在管理程序的控制下交替的执行。
这些作业共享CPU和系统中的其他资源。
5并发是指两个或多个活动在同一给定的时间间隔中进行。
它是宏观上的概念。
6并行是指两个或多个活动在同一时刻同时执行的情况。
7吞吐量在一段给定的时间内,计算机所能完成的总工作量。
8分时就是对时间的共享。
在分时系统中,分时主要是指若干并发程序对CPU时间的共享。
9实时表示“及时”或“既时”。
10系统调用是用户在程序中能以“函数调用”形式调用的、由操作系统提供的子功能的集合。
每一个子功能称作一条系统调用命令。
它是操作系统对外的接口,是用户级程序取得操作系统服务的唯一途径。
11特权指令指指令系统中这样一些指令,如启动设备指令、设置时钟指令、中断屏蔽指令和清内存指令,这些指令只能由操作系统使用。
12命令解释程序其主要功能是接收用户输入的命令,然后予以解释并且执行。
13脱机I/O是指输入/输出工作不受主机直接控制,而由卫星机专门负责完成I/O,主机专门完成快速计算任务,从而二者可以并行操作。
14联机I/O是指作业的输入、调入内存及结果输出都在cpu直接控制下进行。
15资源共享是指计算机系统中的资源被多个进程所功用。
例如,多个进程同时占用内存,从而对内存共享;它们并发执行时对cpu进行共享;各个进程在执行过程中提出对文件的读写请求,从而对磁盘进行共享等等。
简答题1什么是操作系统?它的主要功能是什么?答:操作系统是控制和管理计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。