一、进程管理
1、启动流程
POST:启动BIOS,加载硬件信息到CPU,完成各个设备的中断注册及IO端口注册。读取CMOS,确定启动加载顺序,启动系统,如果是从硬盘启动会读取MBR分区。
2、什么是进程
程序的运行实例(现实表现),程序的一部分代码而已。
CPU通过时序(时间片)让多个任务(程序,进程)同时运行,实质在某一个时间点是只有一个在运行的。CPU通过进程调度器结合调度策略调度进程。
cpu密集型——批处理进程
i/o密集型———交互式进程
3、优先级调度
1-99 实时优先级,99优先级最高
调度方法: chrt -f 99 /bin/ls
用户空间级别的优先级调整
启动时调整优先级:nice
启动后调整优先级:renice
二、CPU性能统计
1、平均负载:
vmstate
[root@node5.dtedu.com ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1555200 18576 175188 0 0 4 0 27 29 0 0 100 0 0
0 0 0 1555200 18576 175208 0 0 0 0 64 55 0 0 100 0 0
0 0 0 1555200 18576 175208 0 0 0 0 49 53 0 0 100 0 0
0 0 0 1555200 18576 175208 0 0 0 0 47 49 0 0 100 0 0
0 0 0 1554936 18576 175208 0 0 0 0 75 118 0 0 100 0 0
w:队列是对每一个cpu的,比如0.9,就是这个cpu的负载率是90%,所以
[root@node5.dtedu.com ~]# w
08:18:38 up 5:26, 1 user, load average: 1.00, 1.00, 0.91
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.4.100 08:18 0.00s 0.07s 0.00s w
top
[root@node5.dtedu.com ~]# top
top - 08:18:34 up 5:26, 1 user, load average: 1.00, 1.00, 0.91
Tasks: 129 total, 1 running, 128 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.2%hi, 0.0%si, 0.0%st
Mem: 1922096k total, 284196k used, 1637900k free, 17412k buffers
Swap: 2064380k total, 0k used, 2064380k free, 95280k cached
2、CPU性能评估
sar,yum install sysstat
[root@node5.dtedu.com ~]# sar -P ALL 10 2
Linux 2.6.32-573.el6.x86_64 (node5.dtedu.com) 2017年05月16日 _x86_64_ (2 CPU)
08时36分58秒 CPU %user %nice %system %iowait %steal %idle
08时37分08秒 all 0.05 0.00 2.00 0.05 0.00 97.90
08时37分08秒 0 0.10 0.00 2.20 0.00 0.00 97.70
08时37分08秒 1 0.10 0.00 1.90 0.00 0.00 98.00
08时37分08秒 CPU %user %nice %system %iowait %steal %idle
08时37分18秒 all 0.05 0.00 0.15 0.00 0.00 99.80
08时37分18秒 0 0.00 0.00 0.20 0.00 0.00 99.80
08时37分18秒 1 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: CPU %user %nice %system %iowait %steal %idle
平均时间: all 0.05 0.00 1.08 0.03 0.00 98.85
平均时间: 0 0.05 0.00 1.20 0.00 0.00 98.75
平均时间: 1 0.05 0.00 0.95 0.00 0.00 99.00
[root@node5.dtedu.com ~]#
dstat,yum install dstat
[root@node5.dtedu.com ~]# dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0|9140B 1087B| 0 0 | 0 0 | 54 57
0 0 100 0 0 0| 0 0 | 126B 974B| 0 0 | 65 50
0 1 99 0 0 0| 0 0 | 66B 420B| 0 0 | 75 59
0 0 100 0 0 0| 0 124k| 66B 346B| 0 0 | 59 65
0 0 100 0 0 0| 0 0 | 66B 420B| 0 0 | 79 71
1 0 100 0 0 0| 0 0 | 126B 420B| 0 0 | 52 55
vmstat ,如果里面的”CS”值在1000个以上说明“进程的上下文切换”太高。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1536480 22364 187316 0 0 4 1 27 29 0 0 100 0 0
0 0 0 1536480 22364 187316 0 0 0 0 60 53 0 1 100 0 0
查看进程运行在那颗cpu上。
[root@node5.dtedu.com ~]# watch -n1 'ps axo comm,pid,psr |grep saslauthd'
Every 1.0s: ps axo comm,pid,psr |grep saslauthd Tue May 16 08:48:30 2017
saslauthd 1875 1
saslauthd 1877 1
saslauthd 1878 1
saslauthd 1879 1
saslauthd 1880 1
当需要将某一个进程绑定到某个cpu上运行,减少进程在cpu之间的跳转,可以通过taskset命令设置。
[root@node5.dtedu.com ~]# ps axo pid,comm,psr |grep 7156
7156 httpd 0
[root@node5.dtedu.com ~]# taskset -c -p 1 7156
pid 7156's current affinity list: 0,1
pid 7156's new affinity list: 1
[root@node5.dtedu.com ~]#
三、内存调优
实际上调整的就是pdflush,这个主要负责内存中的数据更新到磁盘上的管理模块。
kswapd内存虚拟空间的启动策略,
slab allocator,内存空间如何分配。
内存空间区段使用情况:
32位系统:
zone_DMA:1-16M
ZONE_NORMAL:17-896M
ZONE_RESERVED:897-1024M
ZONE_HIGHMEM:
64位系统:
ZONE_DMA:1-1024M 1G
ZONE_DMA32:4G
ZONE_NORMAL:
查看系统区段信息:cat /proc/zoneinfo
[root@node6.dtedu.com ~]# cat /proc/zoneinfo
Node 0, zone DMA
pages free 3924
min 83
low 103
high 124
scanned 0
spanned 4080
present 3826
nr_anon_transparent_hugepages 0 透明大页面,用来改变内存最小存储单位大小。通常小于1T的使用2M的巨型页
protection: (0, 2004, 2004, 2004)
pagesets
cpu: 0
count: 0
high: 0
batch: 1
vm stats threshold: 4
cpu: 1
count: 0
high: 0
batch: 1
vm stats threshold: 4
all_unreclaimable: 0
prev_priority: 12
start_pfn: 16
inactive_ratio: 1
Node 0, zone DMA32
pages free 377640
min 11180
low 13975
high 16770
scanned 0
vm stats threshold: 20
cpu: 1
count: 124
high: 186
batch: 31
vm stats threshold: 20
all_unreclaimable: 0
prev_priority: 12
start_pfn: 4096
inactive_ratio: 3
注意:/proc目录下的所以都可以通过man proc 进行查看相关目录及文件的使用说明。
如果要清空buffer或者coach内容,可以
page caches:通常用来缓存文件的数据
Buffer :缓存文件的元数据,保存用户需要写道磁盘的数据信息。
echo >1 /proc/sys/vm/drop_caches 释放page caches
echo >2 /proc/sys/vm/drop_caches 释放buffer 不建议
swap的使用
通常建议系统不使用swap空间,所以可以通过修改proc下swappiness进行设定,设定值0-100,数值越大使用可能性越高。
swap设置建议:
科学计算:4*RAM(内存)
数据库服务:1G
应用服务器:0.5*RAM
oom标记
用来标记当内存空间告罄的情况下,对于高内存消耗的进程进行关闭的管理标记,通常这个是自动启动的,也可以在内存没有耗尽前手动启动,或者对于高内存进程进行不标记操作。
比如:
1、关闭oom标记,/etc/sysctl.conf或者更改proc
[root@node6.dtedu.com ~]# echo 1 >/proc/sys/vm/panic_on_oom
2、查看进程的oom标记
[root@node6.dtedu.com ~]# cat /proc/2214/oom_score
1
3、调整进程的oom标记,如果不想被杀死,进行使用小的数值。
[root@node6.dtedu.com ~]# cat /proc/2214/oom_adj
0
4、手动启动oom标记,删除高消耗进程
[root@node6.dtedu.com ~]# echo f >/proc/sysrq-trigger
内存检测工具
1、vmstate
[root@node6.dtedu.com ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1525180 17400 207012 0 0 2 1 28 28 0 0 100 0 0
0 0 0 1525164 17400 207012 0 0 0 0 68 101 0 0 100 0 0
修改hugepage的大小,有助于提高TLB的性能,也可以用于快速缓存脚本信息。
启动hugepages:
in /etc/sysctl.conf
vm_nr_hugepages = n
Kernel parameter
hugepages = n
将huge当做内存磁盘来使用:
mkdir /hugepages
mount -t hugetlbfs none /hugepage
检查swap使用情况,通常以下数值频繁出现说明物理内存空间不足。
Linux 2.6.32-573.el6.x86_64 (node6.dtedu.com) 2017年05月16日 _x86_64_ (2 CPU)
17时42分35秒 pswpin/s pswpout/s
17时42分36秒 0.00 0.00
17时42分37秒 0.00 0.00
17时42分38秒 0.00 0.00
[root@node6.dtedu.com ~]# dstat -mgs
------memory-usage----- ---paging-- ----swap---
used buff cach free| in out | used free
177M 20.7M 214M 1465M| 0 0 | 0 0
177M 20.7M 214M 1465M| 0 0 | 0 0
177M 20.7M 214M 1465M| 0 0 | 0 0
178M 20.7M 214M 1465M| 0 0 | 0 0
178M 20.7M 214M 1465M| 0 0 | 0 0
178M 20.7M 214M 1465M| 0 0 | 0 0
178M 20.7M 214M 1465M| 0 0 | 0 0
内核、内存以及文件系统的容量调节/proc/sys/vm/
[root@node6.dtedu.com ~]# ls /proc/sys/vm/
admin_reserve_kbytes hugepages_treat_as_movable mmap_min_addr panic_on_oom
block_dump hugetlb_shm_group nr_hugepages percpu_pagelist_fraction
compact_memory laptop_mode nr_hugepages_mempolicy scan_unevictable_pages
dirty_background_bytes legacy_va_layout nr_overcommit_hugepages stat_interval
dirty_background_ratio lowmem_reserve_ratio nr_pdflush_threads swappiness
dirty_bytes max_map_count numa_zonelist_order unmap_area_factor
dirty_expire_centisecs meminfo_legacy_layout oom_dump_tasks vfs_cache_pressure
dirty_ratio memory_failure_early_kill oom_kill_allocating_task would_have_oomkilled
dirty_writeback_centisecs memory_failure_recovery overcommit_kbytes zone_reclaim_mode
drop_caches min_free_kbytes overcommit_memory
extfrag_threshold min_slab_ratio overcommit_ratio
extra_free_kbytes min_unmapped_ratio page-cluster
[root@node6.dtedu.com ~]#
1、overcommit_memory
是否允许过量使用内存,也就是是否允许使用的内存空间大于实际物理内存空间其实就是是否使用swap。
设定值:
0:内核决定是否允许过量。内核计算过量值
1:内核允许使用过量内存
2:允许内核使用的过量值为物理内存、虚拟内存的
2、msgmax:消息队列中单个消息的最大值
Msgmnb:消息队列的大小
Msgmni:消息队列的个数
Shmall:一次在系统中可以使用的共享内存总量,通过他可以约束内存端个数(shmmax)。
shmmni:用于共享内存的内存端个数(最多多少个内存端用于共享内存)
shmmax:单个内存片段大小。
Threads-max:规定内核使用的最大线程数,
3、同文件系统容量相关的参数
file-max:内存分配的最大句柄数
修改方法:
[root@node6.dtedu.com ~]# vi /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
4、调整内存优化
dirty_ratio:当某一个进程的数值达到总内存的百分比后就写下脏数据(pdflush)
dirty_backgroud_ratio:当总进程的数值合计达到总内存的百分比后开始在后端就写下脏数据(pdflush)
dirty_expire_centisecs:脏页写入磁盘的等待时间间隔
dirty_writeback_centisecs:数据在内存中的老化时间
调优参考文件:http://www.2cto.com/os/201407/315641.html
5、IO优化
io调度器调整方法:
queue_length:缓存区长度
[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/nr_requests
128
max_read_ahead:一次读取队列内排队消息个数
[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/read_ahead_kb
128
修改默认调度器的调度算法:实时生效,永久有效要写入的rc.local中。
[root@node6.dtedu.com ~]# ls /sys/block/sdb/queue/iosched/ //配置调度器算法的文件
back_seek_max fifo_expire_async group_idle low_latency slice_async slice_idle
back_seek_penalty fifo_expire_sync group_isolation quantum slice_async_rq slice_sync
[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/scheduler //可选调度算法及当前调度算法,【】内的为当前调度算法。
noop anticipatory deadline [cfq]
back_seek_max:最大反向寻道。
back_seek_penalty:反向寻道出错后惩罚系数
fifo_expire_async:异步请求等待时间
fifo_expire_sync:同步请求等待时间
压力测试工具:
fio
iozone
磁盘状态跟踪记录工具:yum install blktrace ,blkparse用于分析。
IO子系统优化和监控:http://www.codeceo.com/article/linxu-io-monitor.html
四、linux系统优化及文件系统优化
1、vfs
虚拟文件系统:用于实现程序同底层磁盘不同格式文件系统打交道的“文件系统”。
文件系统属性:
inode
权限
大小
atime
mtime
ctime
lsattr
chattr
知识点:
追踪命令执行过程中的详细信息
[root@node6.dtedu.com ~]# strace ls
execve("/bin/ls", ["ls"], [/* 25 vars */]) = 0
brk(0) = 0x12d7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f61b7ad8000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=54083, ...}) = 0
mmap(NULL, 54083, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f61b7aca000
close(3)
。
。
。
。
。
查看磁盘文件系统相关信息块碎片:
dumpe2fs
[root@node6.dtedu.com ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: /mnt
Filesystem UUID: 2290a914-3116-477b-a72f-394c278b2aa9
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
检查一个文件是否是连续存储在一个磁盘空间:filefrag
/root/install.log: 1 extent found[root@node6.dtedu.com ~]# filefrag /root/install.log -x
Filesystem type is: ef53
Filesystem cylinder groups is approximately 158
File size of /root/install.log is 8835 (3 blocks, blocksize 4096)
FIEMAP failed with unsupported flags 2
/root/install.log: 1 extent found[root@node6.dtedu.com ~]# filefrag /root/install.log -v
Filesystem type is: ef53
Filesystem cylinder groups is approximately 158
File size of /root/install.log is 8835 (3 blocks, blocksize 4096)
ext logical physical expected length flags
0 0 1433842 2 merged
1 2 1433844 1 merged,eof
linux系统本事是可以避免碎片化的,所以不用进行碎片整理,如果非要整理使用fsck命令,非常消耗资源。
文件系统存储存储方式:
ext3:
journal:数据完整性最高,但是性能最差,通常不使用。
ordered:默认操作,数据写入存储区之前先写入日志区确认无误后再写入数据区。
writeback:在ordered的基础上,并不会立即写入元数据区,而是自行选择最佳写入时机。性能好,一致性较差。
使用方法:
[root@node6.dtedu.com ~]# mount -o data=writeback /dev/sdb1 /mnt
ext4文件系统优化:
1、nobarriers,建议mysql数据库存储分区使用此参数进行挂载,mount -o nobarriers
2、noatime,对目录和文件进行不更新时间戳操作。nodirtime只对目录不更新。
3、预读量设置,适用于大量连续读写情况。此值要和物理设备的预读量相关,查看方式:
[root@node6.dtedu.com ~]# blockdev --getra /dev/sdb1
256
xfs文件系统优化
通常使用默认设定就是最佳方案了,并且建议mysql数据库建立在xfs文件系统上。
五、网络IO子系统优化
1、查看网络端口打开状态
[root@node7.dtedu.com ~]# netstat -tunlp //查看tcp/udp的监听状态端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.40.0.227:21064 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1383/rpcbind
tcp 0 0 0.0.0.0:57524 0.0.0.0:* LISTEN 1405/rpc.statd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1546/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1636/master
[root@node7.dtedu.com ~]# netstat -tu //查看tcp/udp的建立连接的端口
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 node7.dtedu.com:41163 node5.dtedu.com:16851 SYN_SENT
tcp 0 0 node7.dtedu.com:ssh 10.40.0.222:65026 ESTABLISHED
2、sar命令检查方法:
[root@node7.dtedu.com ~]# sar -n SOCK 1 4
Linux 2.6.32-573.el6.x86_64 (node7.dtedu.com) 2017年05月18日 _x86_64_ (1 CPU)
16时07分13秒 totsck tcpsck udpsck rawsck ip-frag tcp-tw
16时07分14秒 218 7 7 1 0 0
16时07分15秒 218 7 7 1 0 0
16时07分16秒 218 7 7 1 0 0
16时07分17秒 218 7 7 1 0 0
平均时间: 218 7 7 1 0 0
totsock:系统持有的socket个数
tcpsck:当前正在使用的tcp协议的socket个数
Udpsck:
Romsck:ram正在使用的数量
ip-frag:正在使用的ip分片个数
Tcp-tw:当前正在使用的tcpsocket中处于time_out的个数
3、lsof
列出当前系统打开文件的工具。
每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。
lsof输出各列信息的意义如下:
COMMAND:进程的名称 PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local/ 显示目录下被进程开启的文件 lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d 显示使用fd为4的进程 lsof -i 用以显示符合条件的进程情况 lsof -i[] [protocol][@hostname|hostaddr][:service|port] --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不止一个) port --> 端口号 (可以不止一个)
lsof `which httpd` lsof /etc/passwd lsof /dev/hda6 lsof /dev/cdrom lsof -c sendmail lsof -c courier -u ^zahn lsof -p lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列 lsof -u1000 lsof -utony lsof -u^tony lsof -i lsof -i: lsof -i -U lsof -i UDP@[url]www.akadia.com: lsof -i tcp@ohaha.ks.edu.tw:ftp -r lsof -i tcp@ohaha.ks.edu.tw:ftp -n
4、dstat
多功能系统资源统计生成工具( versatile tool for generating system resource statistics)。在获取的信息上有点类似于top、free、iostat、vmstat等多个工具的合集,官方解释为vmstat、iostat、ifstat等工具的多功能替代品
按照io负载率统计进程排序
[root@node7.dtedu.com ~]# dstat --top-io
----most-expensive----
i/o process
rgmanager 261B 414k
sshd: root@ 146B 184B
fenced 64B 128B
fenced 64B 128B
modclusterd 292B 0
clustat 15k 0
fenced 64B 128B
fenced 64B 128B
modclusterd 292B 0
modclusterd 15k 0
fenced 64B 128B
modclusterd 292B 0 ^C
按照cpu负载率统计进程并排序
[root@node7.dtedu.com ~]# dstat --top-cpu
-most-expensive-
cpu process
corosync 0.1
sshd: root@pt1.0
c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。 -C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。 -d:显示磁盘读写数据大小。 -D hda,total:include hda and total。 -n:显示网络状态。 -N eth1,total:有多块网卡时,指定要显示的网卡。 -l:显示系统负载情况。 -m:显示内存使用情况。 -g:显示页面使用情况。 -p:显示进程状态。 -s:显示交换分区使用情况。 -S:类似D/N。 -r:I/O请求情况。 -y:系统状态。 --ipc:显示ipc消息队列,信号等信息。 --socket:用来显示tcp udp端口状态。 -a:此为默认选项,等同于-cdngy。 -v:等同于 -pmgdsc -D total。 --output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。
来自: http://man.linuxde.net/dstat
六、进程管理优化
1、实现多内核的CPU的“专核专用”的效果。
将多个核心的cpu其中的几个内核独立出来,专门供一些特殊的进程使用,这样就保证了进程的工作稳定性和高效率。要实现此目的,需要在启动系统的时候隔离出需要的内核,然后在将其从io中断中分离出来,最后是内核指定给进程使用。
A、隔离出指定内核,修改/etc/grub.conf文件,并添加一下内容:
isolcpu = cpu number1,cup number2,…….
B、关联进程到内核,
C、将中断信号只发送的其他非“专用”的内核上。
查看终端号同那个cpu关联。
[root@node7.dtedu.com ~]# cat /proc/irq/0/smp_affinity
1
[root@mail ~]# cat /proc/irq/0/smp_affinity
ffffffff
[root@mail ~]# cat /proc/irq/1/smp_affinity
000000ff
[root@mail ~]# cat /proc/irq/5/smp_affinity
000000ff
[root@mail ~]# cat /proc/irq/7/smp_affinity
查看中断号:
[root@node7.dtedu.com ~]# ls /proc/irq/
0 11 14 17 2 26 29 31 34 37 4 42 45 48 50 53 6 9
1 12 15 18 24 27 3 32 35 38 40 43 46 49 51 54 7 default_smp_affinity
10 13 16 19 25 28 30 33 36 39 41 44 47 5 52 55 8
[root@node7.dtedu.com ~]#
比如:我有8个逻辑core,那么CPU#的序列为11111111 (从右到左依次为#0~#7的CPU)如果cat /proc/irq/84/smp_affinity的值为:20(二进制为:00100000),则84这个IRQ的亲和性为#5号CPU。
2、实现多CPU和物理内存绑定为一个“资源组”,并实现进程只能在指定资源组内访问的方法
本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968814,如需转载请自行联系原作者