使用taskset来进行多核系统调优

合集下载

多核处理器系统的任务调度优化算法设计

多核处理器系统的任务调度优化算法设计

多核处理器系统的任务调度优化算法设计1. 引言多核处理器系统在现代计算机体系结构中发挥着至关重要的作用。

通过利用多个核心同时执行任务,多核处理器可以提供更高的效率和性能。

然而,为了充分利用多核处理器的潜力,需要设计高效的任务调度算法,以平衡负载、避免资源竞争,并最大限度地发挥多核处理器的并行性能。

2. 现有的任务调度算法目前已经有很多任务调度算法被提出和应用于多核处理器系统。

其中,最常见和经典的算法包括负载均衡调度算法、静态分配算法、动态分配算法和基于进程优先级的调度算法等。

负载均衡调度算法:负载均衡调度算法旨在将任务均匀地分配给多个核心,以使每个核心的负载尽可能平衡。

这些算法通常基于任务的执行时间、优先级等因素进行任务分配,如轮转调度、最小作业优先法等。

静态分配算法:静态分配算法在任务启动之前将任务静态地分配给各个核心,以充分利用处理器资源。

这些算法适用于任务有固定的执行次序或依赖关系的情况。

动态分配算法:动态分配算法根据任务的执行情况和处理器的负载状况,动态地将任务分配给处理器核心。

这些算法通常包括任务窃取和任务迁移等策略,以实现负载均衡和充分利用处理器资源。

基于进程优先级的调度算法:基于进程优先级的调度算法通过给任务分配优先级来决定任务的执行次序。

这些算法可以根据任务的优先级和各个处理器核心的负载情况动态地调整任务的执行次序,以实现最优的任务调度。

3. 任务调度优化算法设计为了进一步提高多核处理器系统的性能和效率,可以设计一种综合考虑负载均衡、资源利用率和响应时间等因素的任务调度优化算法。

下面是一个基于进程优先级和动态负载均衡策略的任务调度优化算法设计。

步骤1:初始化任务队列和处理器核心队列。

将所有待执行的任务和多个处理器核心分别放入两个队列中。

步骤2:计算任务优先级。

根据任务的属性、执行时间和依赖关系等因素计算每个任务的优先级,并按照优先级进行排列。

步骤3:负载均衡策略。

从任务队列中选择一个任务,根据处理器核心的负载情况将该任务分配给合适的处理器核心。

多核处理器中的任务调度算法研究与优化

多核处理器中的任务调度算法研究与优化

多核处理器中的任务调度算法研究与优化多核处理器是一种能够同时处理多个任务的计算机处理器,由于其高效的并行计算能力,越来越多的应用程序开始利用多核处理器来提高计算性能。

在多核处理器中,任务调度算法起着至关重要的作用,可以合理地分配和调度任务,最大程度地利用处理器资源,提高系统性能。

本文将重点研究和优化多核处理器中的任务调度算法,并探讨其应用和挑战。

首先,我们需要了解多核处理器中常用的任务调度算法。

目前,常见的多核处理器任务调度算法包括静态调度算法和动态调度算法。

静态调度算法在系统启动时就事先确定任务的调度顺序,这样的算法具有简单、高效的特点,适用于任务数固定、稳定的系统。

常见的静态调度算法有轮转调度算法、优先级调度算法和比例公平调度算法。

动态调度算法则根据任务的特征和系统的运行状态,动态地选择合适的任务调度顺序。

常见的动态调度算法有最短处理时间优先调度算法、最短剩余时间优先调度算法和多级反馈队列调度算法。

这些算法各有优劣,适用于不同的系统和任务负载。

然而,在实际应用中,使用预定义的调度算法可能无法满足多核处理器的需求,并且面临一些挑战。

首先,多核处理器的任务调度算法需要解决任务间的负载均衡问题。

负载均衡是指将任务合理地分配到各个处理器核心上,平衡地利用处理器资源。

如果分配不均衡,某些处理器核心可能会空闲,而其他核心则会超负荷工作,降低系统整体性能。

因此,任务调度算法需要能够动态地感知任务负载,选择适合的处理器核心进行调度。

其次,多核处理器的任务调度算法还需要解决任务间的通信和同步问题。

多个任务在多核处理器上进行并行计算时,可能会需要共享数据或进行通信、同步操作。

如果任务间的通信和同步不得当,会导致资源竞争和性能下降。

因此,任务调度算法需要考虑任务的依赖关系和通信开销,能够有效地管理任务之间的通信和同步操作。

针对以上挑战,研究者们提出了一些优化多核处理器任务调度算法的方法。

一种常见的优化方法是通过任务迁移来实现负载均衡。

【推荐下载】系统多核CPU速度提高设置的教程-精选word文档 (2页)

【推荐下载】系统多核CPU速度提高设置的教程-精选word文档 (2页)

【推荐下载】系统多核CPU速度提高设置的教程-精选word文档本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==系统多核CPU速度提高设置的教程Windows7系统多核CPU速度提高设置现在的CPU都是双核CPU,而Windows 7对多核CPU有着良好的支持,如果没有进行适当的设置,在双核CPU启动过程中,就不能发挥多核CPU的性能,那么在Win7下应该怎么设置才能提升多核CPU的速度呢,下面来看看笔者怎么去提高多核CPU的速度。

1、点击开始菜单,在“搜索程序和文件”中输入“msconfig”,回车即打开“系统配置”对话框,请在此对话框中切换到“引导”标签,然后单击图中红圈处的“高级选项”按钮,弹出引导高级选项对话框。

2、在弹出的“引导高级选项”对话框中勾选处理器数,Windows 7系统默认情况下处理器个数为1,如果你是双核用户,在下拉菜单里选择处理器的数目,比如双核就选择“2”,并勾选最大内存选项。

3、修改完毕后,点击“确定”按钮,保存设置退出即可。

虽然现在Windows 7系统优化提速的软件,但是这些软件往往会“由于优化过头,导致部分系统功能丢失”,因此我们还是使用win7内在的设置来提升多核CPU的速度。

如何利用win7系统驱动程序解决电脑没有声音:windows 7系统中集成了海量的设备驱动程序,安装完成后,所有的设备驱动都已装上,主板中集成的Analog Devices公司生产的SoundMax AD1986A声卡被识别为"高清晰度音频设备",用Windows Media Player可以播放MP3,音量控制滑块可以拖动,音量指示器也在跳动,但是电脑就是没有声音。

几番摸索,终于从音量图标提示和音量控制对话框上看到了问题,它们提示的播放设备竟然是"耳机"。

Linux下进程绑定多CPU运行

Linux下进程绑定多CPU运行

进程绑定多核运行名词CPU affinity:中文称作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。

一、在Linux上修改进程的“CPU亲和力”在Linux上,可以通过taskset命令进行修改。

运行如下命令可以安装taskset工具。

在CentOS/Fedora 下安装schedutils:# yum install schedutils在Debian/Ubuntu 下安装schedutils:# apt-get install schedutils如果正在使用CentOS/Fedora/Debian/Ubuntu 的最新版本的话,schedutils/util-linux 这个软件包可能已经装上了。

计算CPU Affinity 和计算SMP IRQ Affinity 差不多:0x00000001 (CPU0)0x00000002 (CPU1)0x00000003 (CPU0+CPU1)0x00000004 (CPU2)...如果想设置进程号(PID)为12212 的进程到CPU0 上的话:# taskset 0x00000001 -p 12212或者关掉任务(MySQL),并用taskset将它启动:# taskset -c 1,2,3 /etc/init.d/mysql start对于其他进程,也可如此处理(nginx除外,详见下文)。

之后用top查看CPU的使用情况。

二、配置nginx绑定CPU刚才说nginx除外,是因为nginx提供了更精确的控制。

在conf/nginx.conf中,有如下一行:worker_processes 1;这是用来配置nginx启动几个工作进程的,默认为1。

而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。

我做了如下配置:worker_processes 3;worker_cpu_affinity 0010 0100 1000;这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。

多核处理器上的操作系统调度

多核处理器上的操作系统调度

多核处理器上的操作系统调度多核处理器上的操作系统调度随着科技的不断发展和计算机性能的不断提升,多核处理器成为了如今计算机体系结构的主流。

多核处理器能够同时执行多个任务,提高计算效率,但同时也提出了新的挑战,即如何合理高效地分配和调度任务,充分利用多核处理器的性能优势。

在多核处理器上,操作系统的调度策略是关键,直接影响到系统的性能和资源利用率。

一个好的调度策略能够充分利用多核处理器的并行计算能力,提高系统吞吐量和响应速度。

下面将介绍几种常见的多核处理器上的操作系统调度策略。

首先,常见的调度策略之一是静态调度。

静态调度是指在任务开始执行之前,由操作系统预先确定每个任务的执行顺序和时间片分配。

这种调度策略对于任务具有明确的执行顺序和时间要求的场景非常有效。

比如,对于实时系统,可以通过静态调度保证任务按照严格的时间要求完成。

然而,静态调度策略往往需要提前对任务进行合理的预估和分析,如果任务的特性发生变化,可能需要重新进行调度。

另一种常见的调度策略是动态调度,动态调度是指根据实时的系统状态和任务要求,实时地进行任务调度和资源分配。

动态调度能够根据系统负载和任务的紧急程度决定任务的执行顺序和时间片分配。

动态调度策略更加灵活,能够根据任务的特性和系统当前状态进行实时调整,提高系统的响应速度和资源利用率。

但相应地,动态调度策略需要更加复杂和高效的调度算法和机制,来快速准确地做出调度决策。

除了静态调度和动态调度,还有一种常见的调度策略是混合调度。

混合调度策略结合了静态调度和动态调度的特点,既能根据任务的要求分配一定的时间片给任务,又能在运行过程中动态地调整任务的执行顺序。

混合调度策略能够在保证任务执行顺序和时间要求的前提下,充分利用多核处理器的并行性能,提高系统的吞吐量和响应速度。

混合调度策略通常需要通过一些特殊的数据结构和算法来实现,以便快速准确地做出调度决策。

除了调度策略,操作系统调度还需要考虑任务的调度粒度。

多核处理器中的任务调度算法优化研究

多核处理器中的任务调度算法优化研究

多核处理器中的任务调度算法优化研究随着技术的发展,多核处理器已经成为了计算机系统中的重要组成部分。

多核处理器有着更高的运算能力和更强的并行处理能力,可以同时执行多个任务,提高系统的性能和效率。

然而,多核处理器中的任务调度算法却是一个具有挑战性的问题。

本文将探讨多核处理器中的任务调度算法优化研究。

首先,我们需要了解任务调度算法在多核处理器中的作用。

任务调度算法的主要功能是将各个任务分配给不同的处理器核心,使得多个任务能够在不同的核心上并行执行。

一个好的任务调度算法可以合理地分配任务,充分利用处理器核心的计算资源,提高系统的性能和效率。

目前,多核处理器中常用的任务调度算法主要有静态任务调度算法和动态任务调度算法两种。

静态任务调度算法在任务分配之前就已经确定好任务的执行顺序和分配方式,包括静态轮转法、静态优先级算法等。

这些算法的优点是简单高效,适用于一些对响应时间要求不高的应用场景。

然而,静态任务调度算法无法适应任务的动态变化,并且不能充分利用多核的并行能力。

相比之下,动态任务调度算法在任务分配时可以实时地根据任务的特性和系统的状态来调整任务的执行顺序和分配方式,如最短作业优先算法、最高优先级优先算法等。

这些算法可以根据任务的优先级来合理地对任务进行调度,提高系统的性能和效率。

然而,动态任务调度算法的复杂度较高,需要更多的计算和判断,可能会导致一定的延迟和开销。

为了解决多核处理器中任务调度算法的优化问题,研究者们提出了许多新的算法和方法。

例如,基于遗传算法的任务调度算法可以通过模拟生物进化的方式来优化任务的分配,提高系统的负载均衡和性能。

基于多目标优化的任务调度算法可以综合考虑任务的优先级、任务之间的依赖关系和系统的资源限制等因素,使得任务调度更加智能化和灵活化。

另外,一些研究者还从硬件的角度进行优化。

例如,通过设计具有较大缓存和更快的内存访问速度的处理器芯片,可以减小任务之间的竞争和延迟,提高任务的执行效率。

多核处理器任务并行调度算法设计与优化

多核处理器任务并行调度算法设计与优化随着计算机技术的快速发展,多核处理器成为了当前计算机系统的主要设计方向之一。

多核处理器拥有多个处理核心,可以同时处理多个任务,提高计算机的处理性能和并行计算能力。

然而,如何有效地调度和管理多核处理器上的任务,成为了一个重要的课题。

本文将介绍多核处理器任务并行调度算法的设计与优化。

首先,我们需要了解多核处理器任务并行调度算法的基本原理。

多核处理器上的任务调度是指将不同的任务分配到不同的处理核心上,以最大程度地提高处理器的利用率和性能。

而并行调度算法则侧重于如何将任务分配到不同的处理核心上,并保持任务之间的并行执行,以实现更高效的任务处理。

在多核处理器上,任务并行调度算法需要考虑以下几个关键因素。

首先是任务之间的依赖关系。

如果一个任务依赖于另一个任务的结果,那么在调度时需要确保被依赖的任务先于依赖任务调度执行。

其次是处理核心之间的负载均衡。

为了实现最佳的性能,需要确保每个处理核心上的任务负载平衡,避免出现某个处理核心负载过高而其他核心空闲的情况。

最后是通信开销。

在多核处理器上,任务之间的通信会引入额外的开销,调度算法需要尽量减少通信开销,提高整体的执行效率。

在设计多核处理器任务并行调度算法时,可以采用以下的一些经典算法。

首先是最短作业优先(SJF)调度算法。

该算法将任务按照执行时间进行排序,先执行执行时间最短的任务,从而减少任务的等待时间,提高整体的处理效率。

其次是先来先服务(FCFS)调度算法。

该算法按照任务到达的顺序进行调度,保证任务的公平性,但不能有效地利用处理器资源。

再次是最高响应比优先(HRRN)调度算法。

该算法通过计算任务等待时间和服务时间的比值,选择具有最高响应比的任务进行调度,以提高任务的响应速度和处理器利用率。

最后是多级反馈队列(MFQ)调度算法。

该算法将任务分为多个队列,根据任务的优先级进行调度,优先处理优先级高的任务,并逐渐降低任务的优先级,以实现负载均衡。

使用taskset来进行多核系统调优

使用taskset来进行多核系统调优查看pid和那个cpu亲和taskset -pc 3687返回pid 3687's current affinity list: 0,1,2,3表示3687和0,1两个cpu内核比较亲和taskset -pc 0-1 3687设置线程3678和0,1两个cpu内核亲和top -p 3687查看此线程具体执行情况************************************************ ************************************************ ******************************利用taskset可以充分利用多核cpu的好处,可以让某个程序或脚本,运行在某个具体的cpu上。

这个工具系统可能没有默认安装:,rpm包名util-linux#taskset --helptaskset (util-linux 2.13-pre7)usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]]set or get the affinity of a process-p, –pid operate on existing given pid-c, –cpu-list display and specify cpus in list format-h, –help display this help-v, –version output version information1:让某个程序运行在特定cpu上面taskset -c 0 sh wade.sh2:切换某个进程到特定的cpu上。

taskset -pc 0 12345比如你有一个cpu是4 core你可以这样写你的脚本#!/bin/bashtaskset -c 0 sh a.sh &taskset -c 1 sh b.sh &taskset -c 2 sh c.sh &taskset -c 3 sh d.sh &应该可以充分利用你的cpu了。

多核处理器中的任务调度算法优化研究

多核处理器中的任务调度算法优化研究引言:随着计算机技术的不断发展,多核处理器已经成为了当前主流的计算机架构之一。

多核处理器通过在一个集成电路上组合多个处理器核心,可以并行处理多个任务,从而实现更高的计算性能。

然而,随着核心数量的增加,任务调度算法的性能优化变得越来越重要。

本文将探讨多核处理器中任务调度算法的优化研究。

一、多核处理器的任务调度算法介绍1.1 静态任务调度算法静态任务调度算法是在任务开始执行前就确定了任务的调度顺序。

常见的静态任务调度算法包括FIFO(先进先出)、RR(轮转调度)等。

这些算法简单易实现,但对于多核处理器的利用率不高,因为它们无法根据核心的负载情况进行动态调整。

1.2 动态任务调度算法动态任务调度算法是根据当前核心的负载情况,动态地选择合适的任务进行调度。

常见的动态任务调度算法包括最短作业优先(SJF)、最小可剩余时间(SRT)、最高响应比优先(HRRN)等。

这些算法可以根据任务的执行时间和优先级灵活选择最佳的任务调度方案,从而提高多核处理器的利用率。

二、多核处理器中任务调度算法的优化2.1 平衡负载算法在多核处理器中,任务调度的一个关键目标是平衡负载,即使各个核心的工作负载尽量均衡。

常见的平衡负载算法包括最少剩余时间(LSF)、最佳适应度算法(BFA)等。

这些算法通过动态地调整任务之间的切换和分配,使得各个核心的负载保持均衡,从而提高系统的整体性能。

2.2 优先级调度算法优先级调度算法是根据任务的优先级进行调度。

常见的优先级调度算法包括最高优先级(HPF)、最低优先级(LPF)等。

这些算法通过赋予不同任务不同的优先级,保证高优先级任务的及时响应,从而提高系统的实时性能。

2.3 预测性任务调度算法预测性任务调度算法是根据任务的历史执行情况进行调度。

常见的预测性任务调度算法包括最小错误率预测(MLP)、人工神经网络(ANN)等。

这些算法通过学习任务的历史执行情况,预测未来任务的执行情况,从而预先分配合适的任务给核心,提高多核处理器的利用率和执行效率。

操作系统在多核处理器中的优化方法

操作系统在多核处理器中的优化方法随着科技的不断发展和计算机硬件的进步,多核处理器成为了现代计算机的主流配置。

然而,要充分发挥多核处理器的潜力并提高系统性能,并不仅仅依靠硬件的升级,操作系统在多核处理器中的优化也起着至关重要的作用。

本文将探讨操作系统在多核处理器中的优化方法。

一、任务调度优化在多核处理器中,任务的调度是操作系统的一个关键功能。

传统单核处理器的任务调度算法不再适用于多核场景,因此需要针对多核处理器进行优化。

以下是几种常见的任务调度优化方法。

1. 对称多处理(SMP)对称多处理是一种常见的任务调度方法,也是传统单核处理器的延续。

该方法将所有处理核心视为对称的,任务可以在任何一个核心上运行,系统会动态地将任务在核心之间进行平衡,使得每个核心的负载尽可能均衡。

然而,SMP方法主要使用在对称多处理器上,并未充分利用多核处理器的潜力。

2. 异步多线程(ASMP)异步多线程是一种更高级的任务调度方法,可以更好地适应多核处理器。

该方法将一个进程拆分为多个线程,并在不同的核心上运行,实现并行计算。

每个线程可以独立执行,通过合理调度和资源管理来优化系统性能。

3. 任务粒度调整任务的粒度对于多核处理器的性能至关重要。

过小的任务粒度会导致频繁的上下文切换和负载不均衡,而过大的任务粒度会导致部分核心空闲。

因此,操作系统需要根据任务的特点和处理器的性能调整任务的粒度,以最大程度地发挥多核处理器的并行能力。

二、内存管理优化内存管理是操作系统的核心功能之一,而在多核处理器中,如何优化内存管理对于系统性能至关重要。

1. 缓存一致性多核处理器的一个重要特点是共享缓存。

当多个核心同时修改同一个缓存区域时,需要保证缓存的一致性,否则会导致数据错误。

操作系统可以通过合理的缓存一致性协议来保证数据的正确性和一致性。

2. NUMA架构优化在某些情况下,多核处理器会采用非一致性访问内存(NUMA)的架构。

这种架构下,每个核心访问本地内存的速度要快于访问远程内存。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查看pid和那个cpu亲和taskset -pc 3687返回pid 3687's current affinity list: 0,1,2,3表示3687和0,1两个cpu内核比较亲和taskset -pc 0-1 3687设置线程3678和0,1两个cpu内核亲和top -p 3687查看此线程具体执行情况******************************************************** ******************************************************** **************利用taskset可以充分利用多核cpu的好处,可以让某个程序或脚本,运行在某个具体的cpu上。

这个工具系统可能没有默认安装:,rpm包名util-linux#taskset --helptaskset (util-linux 2.13-pre7)usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]]set or get the affinity of a process-p, –pid operate on existing given pid-c, –cpu-list display and specify cpus in list format-h, –help display this help-v, –version output version information1:让某个程序运行在特定cpu上面taskset -c 0 sh wade.sh2:切换某个进程到特定的cpu上。

taskset -pc 0 12345比如你有一个cpu是4 core你可以这样写你的脚本#!/bin/bashtaskset -c 0 sh a.sh &taskset -c 1 sh b.sh &taskset -c 2 sh c.sh &taskset -c 3 sh d.sh &应该可以充分利用你的cpu了。

**************************************************************************************************************** **************我的Linode十分繁忙,在跑一些密集操作数据库的Rake任务时尤其如此。

但我观察发现,Linode服务器的4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态。

不了解Linux是如何调度的,但目前显然有优化的余地。

除了处理正常任务,CPU#0还需要处理每秒网卡中断。

因此,若能将CPU#0分担的任务摊派到其他CPU 核心上,可以预见,系统的处理能力将有更大的提升。

两个名词SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。

[更多...]CPU affinity:中文唤作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。

[更多...]一、在Linux上修改进程的“CPU亲和力”在Linux上,可以通过taskset命令进行修改。

以Ubuntu为例,运行如下命令可以安装taskset工具。

# apt-get install schedutils对运行中的进程,文档上说可以用下面的命令,把CPU#1 #2 #3分配给PID为2345的进程:# taskset -cp 1,2,3 2345但我尝试没奏效,于是我关掉了MySQL,并用taskset将它启动:# taskset -c 1,2,3 /etc/init.d/mysql start对于其他进程,也可如此处理(nginx除外,详见下文)。

之后用top查看CPU 的使用情况,原来空闲的#1 #2 #3,已经在辛勤工作了。

二、配置nginx绑定CPU刚才说nginx除外,是因为nginx提供了更精确的控制。

在conf/nginx.conf中,有如下一行:worker_processes 1;这是用来配置nginx启动几个工作进程的,默认为1。

而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。

我做了如下配置:worker_processes 3;worker_cpu_affinity 0010 0100 1000;这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。

重启nginx后,3个工作进程就可以各自用各自的CPU了。

三、刨根问底1.如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。

在Linux上,这会触发一次系统调用。

2.如果父进程设置了affinity,之后其创建的子进程是否会有同样的属性?我发现子进程确实继承了父进程的affinity属性。

四、Windows?在Windows上修改“CPU亲和力”,可以通过任务管理器搞定。

* 个人感觉,Windows系统中翻译的“处理器关系”比“CPU亲和力”容易理解点儿—————–进行了这样的修改后,即使系统负载达到3以上,不带缓存打开 首页(有40多次查询)依然顺畅;以前一旦负载超过了1.5,响应就很慢了。

效果很明显。

linux taskset命令详解SYNOPSIStaskset [options] [mask | list ] [pid | command [arg]...] OPTIONS-p, --pidoperate on an existing PID and not launch a new task -c, --cpu-listspecifiy a numerical list of processors instead of a bitmask.The list may contain multipleitems, separated by comma, andranges. For example, 0,5,7,9-11.-h, --helpdisplay usage information and exit-V, --versionoutput version information and exit********************************************************************* *********************************************************现在多核的CPU已经相当普遍了,那么这种多核的服务器如何让CPU得到充分利用,可以靠应用自己来定义,或者依赖操作系统来调度。

根据红帽的说法RHEL5有一个很强壮的CPU调度机制,RHEL6就更强壮了,所以看起来跑在LINUX 下面的应用应该都不用去管该用哪个CPU。

首先我们来看看CPU中断请求的统计:CentOS release 5.2 (Final)从图上看,CPU的使用基本上还是均匀的。

不过CPU0负载还是最大的。

所有在某种情况下可能会需要手工来设置进程使用CPU核的优先级。

下面是一个操作的例子:postgres 6457 1 0 May05 ? 00:00:00/app/pgsql/bin/postgres -D /database/pgdata -p 1921[root@develop1 ~]# taskset -pc 6457pid 6457’s current affinity list: 0-3这个进程目前是默认与0-3 这4个核心亲和的。

也就是说会在0-3这几个核心调度。

[root@develop1 ~]# taskset -pc 0-1 6457pid 6457’s current affinity list: 0-3pid 6457’s new affinity list: 0,1修改之后我们看到,已经修改为0,1的范围了。

可以通过top -p 6457 [f -> j]查看P列可以看到当前运行的核心号。

如果该成在单个CORE上跑的话,马上就能看到CORE的变化。

下面是taskset的MAN PAGE:从描述上来看的话,只要taskset返回结果了,那LINUX肯定是确保得到了你想要的结果。

DESCRIPTIONtaskset is used to set or retrieve the CPU affinity of a running process given its PID or to launch a new COM-MAND with a given CPU affinity. CPU affinity is a scheduler property that “bonds” a process to a given set ofCPUs on the system. The Linux scheduler will honor the given CPU affinity and the process will not run on anyother CPUs. Note that the Linux scheduler also supports natural CPU affinity: the scheduler attempts to keepprocesses on the same CPU as long as practical for performance reasons. Therefore, forcing a specific CPUaffinity is useful only in certain applications.The CPU affinity is represented as a bitmask, with the lowest order bit corresponding to the first logical CPUand the highest order bit corresponding to the last logical CPU. Not all CPUs may exist on a given system buta mask may specify more CPUs than are present. A retrieved mask will reflect only the bits that correspond toCPUs physically on the system. If an invalid mask is given (i.e., one that corresponds to no valid CPUs on thecurrent system) an error is returned. The masks are typically given in hexadecimal. For example,0×00000001is processor #00×00000003is processors #0 and #10xFFFFFFFFis all processors (#0 through #31)When taskset returns, it is guaranteed that the given program has been scheduled to a legal CPU.。

相关文档
最新文档