一、进程管理

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|91401087B|   0     0 |   0     0 |  54    57 

  0   0 100   0   0   0|   0     0 | 126 974B|   0     0 |  65    50 

  0   1  99   0   0   0|   0     0 |  66 420B|   0     0 |  75    59 

  0   0 100   0   0   0|   0   124k|  66 346B|   0     0 |  59    65 

  0   0 100   0   0   0|   0     0 |  66 420B|   0     0 |  79    71 

  1   0 100   0   0   0|   0     0 | 126 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

 17720.7 2141465M|   0     0 |   0     0 

 17720.7 2141465M|   0     0 |   0     0 

 17720.7 2141465M|   0     0 |   0     0 

 17820.7 2141465M|   0     0 |   0     0 

 17820.7 2141465M|   0     0 |   0     0 

 17820.7 2141465M|   0     0 |   0     0 

 17820.7 2141465M|   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

Red-Hat性能调优指导.pdf

磁盘状态跟踪记录工具: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   261 414k

sshd: root@ 146 184B

fenced       64 128B

fenced       64 128B

modclusterd 292B    0 

clustat      15k    0 

fenced       64 128B

fenced       64 128B

modclusterd 292B    0 

modclusterd  15k    0 

fenced       64 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

364643.tmp

六、进程管理优化

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和物理内存绑定为一个“资源组”,并实现进程只能在指定资源组内访问的方法