3-12 CPU - 内存-IO -网络调优

  12.1.2   查看CPU一分钟有多少个次切换

  查看内核一秒中断CPU 次数   注意此文件是编译内核的参数文件

12.1.3   调整进程优先级使用更多CPU 

   优先级控制

  nice  值   #  范围  -20  ~  19   越小优先级越高,普通用户是0~19 

  nice 

作用;  以什么优先级运行进程,默认优先级是0 

语法:nice  -n     优先级数字,  命令

[root@xuegod2 ~]# nice -n -5 vim a.txt


top   -p  65142  

修改进程号  renice   -n  5  65142 



[root@xuegod2 ~]# renice -n 20 65142

65142 (进程 ID) 旧优先级为 5,新优先级为 19

[root@xuegod2 ~]# renice -n -21 65142 

65142 (进程 ID) 旧优先级为 19,新优先级为 -20

12.1.4   CPU  亲和力 

taskset   作用 :   在多核情况下,可以认为指定一个进程在哪个CPU上执行程序,减少进程在不同CPU之前的开销

安装  

[root@xuegod2 ~]# rpm -qf `which taskset`

util-linux-2.23.2-59.el7.x86_64

语法:  taskset   -c  N     命令

[root@xuegod2 ~]# taskset -c 0 vim a.txt     1号CPU  id  是0 

[root@xuegod2 ~]# ps -aux | grep a.txt

root      65406  0.0  0.2 151832  5412 pts/0    S+  14:53  0:00 vim a.txt

root      65417  0.0  0.0 112724  1000 pts/1    S+ 

[root@xuegod2 ~]# taskset -p 65406      #-p   要查看进程IP 

pid 65406's current affinity mask: 1     #  CPU亲和力掩码,1  代码第一个CPU核心

例子2  查sshd 进程运行在哪几个CPU上

[root@xuegod2 ~]# ps -aux | grep sshd

root      7416  0.0  0.2 112756  4356 ?        Ss  11:51  0:00 /usr/sbin/sshd -D    这个才是他的进程

root      8136  0.0  0.2 160848  5616 ?        Ss  11:52  0:01 sshd: root@pts/0

root      65151  0.0  0.2 160848  5608 ?        Ss  14:35  0:00 sshd: root@pts/1

root      65527  0.0  0.0 112728  988 pts/1    S+  15:01  0:00 grep --color=auto sshd

[root@xuegod2 ~]# taskset -p 7416

pid 7416's current affinity mask: f     说明sshd 在4个CPU上随机进行切换


[root@xuegod2 ~]# taskset -c 1,3 vim a.txt   

[root@xuegod2 ~]# ps -aux | grep a.txt

root      65578  0.2  0.2 151832  5412 pts/0    S+  15:08  0:00 vim a.txt

root      65582  0.0  0.0 112724  1000 pts/1    S+  15:08  0:00 grep --color=auto a.txt

[root@xuegod2 ~]# taskset -p  65578

pid 65578's current affinity mask: a

#  a  为十进制的10=2+8  

  注意: 在哪个CPU上运行,哪一个为1 


12.1.5   CPU  性能监控 

理解运行队列,利用率,上下文切换读怎么样CPU性能最优化之间的关系,早期提及性能是相对于准线数据的

在一些系统中,通常预期所达到的性能包括

Run  Queues   -每个处理器应该运行队列不超过1-3个线程

例子  一个双核处理器队列不要超过6个

注意  有两个特殊的进程永远在队列中待着,当前进程和进程idle

12.  1.6   CPU 利用率比例分配


例1  :  持续的CPU利用率

在这个例子中,这个系统的CPU充分利用

[root@xuegod2 ~]# vmstat 1 10    本机为单核CPU ,执行vmstat   显示一下内容

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0  85004    192 1442404    0    0    14    27  28  32  0  0 99  0  0

0  0      0  84872    192 1442404    0    0    0    0  76  110  0  0 100  0  0

0  0      0  84872    192 1442404    0    0    0    0  49  84  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  53  87  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  49  82  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  94  123  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  70  95  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  55  92  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  48  81  0  0 100  0  0

0  0      0  84880    192 1442404    0    0    0    0  55  97  0  0 100  0  0


root@xuegod2 ~]# vmstat 1     在这个例子中,内核调度中的上下文切换处于饱和


procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b   swpd         free     buff       cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0  85004    192 1442404    0    0    14    26  27  31  0  0 99  0  0

0  0      0  85004    192 1442404    0    0    0    0  65  75  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  36  51  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  30  46  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  31  50  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  35  49  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  77  85  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  28  44  0  0 100  0  0

0  0      0  85012    192 1442404    0    0    0    0  30  47  0  0 100

根据观察值,得出,我们可以得到一下结论

1 ,上下文切换数据高于终端数据,说明内核中有相当数量的时间在都在开销

在上下文切换进程


12.2   有关内存的调优 

有关内存的调优

12.2.1    内存调优相关内容

关于内存,一般情况下,不用调优,我们在这里分析一下情况

BUFFER   inode   节点索引缓存,缓存  写时用,先写入到内存

CACHE   block  块   页面缓存,块取  读时用,先读入到内存 中

 buffer    缓存从磁盘读出的内容     这种理解是片面的

  cached   缓存需要写入的内容    这种理解是片面的

[root@xuegod2 ~]# free

              total        used        free      shared  buff/cache  available

Mem:        2028116      498012      87620      10532    1442484    1231072

Swap:      2097148          0    2097148

[root@xuegod2 ~]# echo 3 >/proc/sys/vm/drop_caches 

[root@xuegod2 ~]# free

              total        used        free      shared  buff/cache  available

Mem:        2028116      419820    1420524      10532      187772    1403736

Swap:      2097148          0    2097148

[root@xuegod2 ~]#

使用find  /

[root@xuegod2 ~]# vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0 1415364      0 192664    0    0    12    23  25  29  0  0 99  0  0

[root@xuegod2 ~]# free -h

              total        used        free      shared  buff/cache  available

Mem:          1.9G        411M        1.3G        10M        190M        1.3G

Swap:          2.0G          0B        2.0G

[root@xuegod2 ~]# free -h

              total        used        free      shared  buff/cache  available

Mem:          1.9G        413M        1.3G        10M        245M        1.3G

Swap:          2.0G          0B        2.0G

[root@xuegod2 ~]# vmstat 

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0 1305536      0 261404    0    0    13    23  26  30  0  0 99  0  0

使用  grep   aaa /  -R

[root@xuegod2 ~]# free -h

              total        used        free      shared  buff/cache  available

Mem:          1.9G        479M        1.1G        10M        401M        1.2G

Swap:          2.0G          0B        2.0G

[root@xuegod2 ~]# vmstat 

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0 1126848      0 410696    0    0    15    23  26  30  0  0 99  0  0


echo 3 >/proc/sys/vm/drop_caches     清理内存

CACHE   :  页缓存,内存页  一页尺寸,4kb  

对象文件系统,块block  1  kb  2  kb  4kb 

扇区 

sectors  512b  

手动情况buffer 和cache  

[root@xuegod2 ~]# cat /proc/sys/vm/drop_caches

3

[root@xuegod2 ~]# free

              total        used        free      shared  buff/cache  available

Mem:        2028116      492360    1125084      10532      410672    1275384

Swap:      2097148          0    2097148

[root@xuegod2 ~]# sync      #  把内存中的数据写入磁盘中

[root@xuegod2 ~]# echo 1 >/proc/sys/vm/drop_caches 

[root@xuegod2 ~]# free

              total        used        free      shared  buff/cache  available

Mem:        2028116      492560    1268496      10532      267060    1285960

Swap:      2097148          0    2097148


12.3   I/O  调优 相关内容

  12.3.1   资源限制

12.3.1   资源限制 

例子1  永久修改一个进程可以打开的最大文件数

限制用户资源配置文件,  vim /etc/security/limits.conf 是模块pam_limits.so  的配置文件

pam  相关配置文件

/lib64/security/      #pam  模块所在目录

/etc/security/    #  pam    每个模块的配置文件

/etc/pam.d   /  使用pam  功能的服务和应用程序的配置文件

重启系统才能生效

2    启动系统,reboot     永久生效的缺点是必须是重启系统

3 检查

可以临时生效

ulimit   -n     100000



[root@xuegod2 ~]# grep pam_limits.so /etc/pam.d/ -R

例2  : nproc   用户可以打开的最大进程数

[root@xuegod2 ~]# vim /etc/security/limits.conf

*                 soft nproc 66666

*                hard    nproc          66666

重启reboot 

[root@xuegod2 ~]# ulimit -u 66666   临时修改

[root@xuegod2 ~]# ulimit -u 

66666

[root@xuegod2 ~]#

[root@xuegod2 ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size          (kbytes, -d) unlimited

scheduling priority            (-e) 0

file size              (blocks, -f) unlimited

pending signals                (-i) 7798

max locked memory      (kbytes, -l) 64

max memory size        (kbytes, -m) unlimited

open files                      (-n) 1024000    最大打开的文件数

pipe size            (512 bytes, -p) 8

POSIX message queues    (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time              (seconds, -t) unlimited

max user processes              (-u) 66666  最大的用户进程数

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

测试硬盘的速度

yum install hdparm -y

[root@xuegod2 ~]# hdparm -T -t /dev/sda

/dev/sda:

Timing cached reads:  13388 MB in  2.00 seconds = 6707.36 MB/sec

Timing buffered disk reads: 506 MB in  3.00 seconds = 168.47 MB/sec

[root@xuegod2 ~]# dd if=/dev/zero of=/test.dbf bs=8k count=3000

记录了3000+0 的读入

记录了3000+0 的写出

24576000字节(25 MB)已复制,0.063316 秒,388 MB/秒

[root@xuegod2 ~]# hdparm -T -t /dev/sda

/dev/sda:

Timing cached reads:  12418 MB in  2.00 seconds = 6221.39 MB/sec

Timing buffered disk reads: 774 MB in  3.01 seconds = 257.30 MB/sec

time  命令

[root@xuegod2 ~]# time dd if=/dev/zero of=/test.dbf bs=8k count=3000

记录了3000+0 的读入

记录了3000+0 的写出

24576000字节(25 MB)已复制,0.0437245 秒,562 MB/秒

real 0m0.048s

user 0m0.000s

sys 0m0.047s


12.4   网络相关调优 

12.4.1   网卡绑定技术

  功能        双线冗余

               宽带增倍



1  )  增加一张网卡  都为桥接模式

一张

  2  ) [root@xuegod2 network-scripts]# nmcli device

DEVICE      TYPE      STATE  CONNECTION

ens33      ethernet  连接的  ens33     

ens38      ethernet  连接的  ens38     

virbr0      bridge    连接的  virbr0   

lo          loopback  未托管  --       

virbr0-nic  tun      未托管  --

3 )  [root@xuegod2 network-scripts]# nmcli connection show

NAME    UUID                                  TYPE      DEVICE

ens33  3e92dd32-e15b-47ed-8663-9dda562f0382  ethernet  ens33 

ens38  e49bdf6d-37c4-3a99-84aa-bf5c0b7f723c  ethernet  ens38 

virbr0  88e2e037-8d2c-422a-95bd-ff05b79cb5f7  bridge    virbr0

12.4.6   删除网卡连接信息

  本次Network  bonding   配置中,需要将ens33和ens38    绑定为bond0  


4 )  删除网卡信息
[root@xuegod2 network-scripts]# nmcli connection delete ens33

成功删除连接 'ens33'(3e92dd32-e15b-47ed-8663-9dda562f0382)。

[root@xuegod2 network-scripts]# nmcli connection    delete ens38

成功删除连接 'ens38'(e49bdf6d-37c4-3a99-84aa-bf5c0b7f723c)。

[root@xuegod2 network-scripts]#



开始创建设备

5 )  [root@xuegod2 network-scripts]# nmcli connection add type bond ifname bondO con-name bondO miimon 100 mode active-backup primary ens33 ip4 192.168.24.62/24

连接“bondO”(d851a812-64cd-4253-91b1-30e161a69851) 已成功添加。



12.4.7  创建子接口 

   将网卡ens33 和ens38   创建为bondO  的子接口

   添加网卡ens33  :  设备类型:bond-slave   :   连接名称:  bondO-p1   :  master :bondO 


[root@xuegod2 network-scripts]# nmcli connection add type bond-slave ifname ens33 con-name bondO-p1 master bondO

连接“bondO-p1”(f1885997-e76a-4f85-b774-6ef72738b1d6) 已成功添加。

[root@xuegod2 network-scripts]# nmcli connection add type bond-slave ifname ens38 con-name bondO-p2  master bondO

连接“bondO-p2”(0cffdda0-9f9b-4052-b810-46875ee3ee14) 已成功添加。


[root@xuegod2 network-scripts]# cat ifcfg-bondO-p1

TYPE=Ethernet

NAME=bondO-p1

UUID=f1885997-e76a-4f85-b774-6ef72738b1d6

DEVICE=ens33

ONBOOT=yes

MASTER=bondO

SLAVE=yes

12.4.8    激活bondO  子接口

查看当前已经激活的网络接口


激活成功

[root@xuegod2 network-scripts]# nmcli connection up bondO-p1

连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/8)

[root@xuegod2 network-scripts]# nmcli connection up bondO-p2 

连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/8)

看到两个已经激活状态

2 ~]# nmcli connection up bondO   成功激活 

Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)

12.4.9  查看bondO  状态  

[root@xuegod2 ~]# cd /proc/net/bonding/

[root@xuegod2 bonding]# ls

bondO

[root@xuegod2 bonding]#


[root@xuegod2 bonding]# cat bondO

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: ens33 (primary_reselect always)

Currently Active Slave: ens33

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: ens33

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:29:a3:05

Slave queue ID: 0

Slave Interface: ens38

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:29:a3:0f

Slave queue ID: 0

uegod2 bonding]# ping 192.168.24.62      测试一下   

PING 192.168.24.62 (192.168.24.62) 56(84) bytes of data.

64 bytes from 192.168.24.62: icmp_seq=1 ttl=64 time=0.012 ms

64 bytes from 192.168.24.62: icmp_seq=2 ttl=64 time=0.022 ms

64 bytes from 192.168.24.62: icmp_seq=3 ttl=64 time=0.033 ms

64 bytes from 192.168.24.62: icmp_seq=4 ttl=64 time=0.019 ms

64 bytes from 192.168.24.62: icmp_seq=5 ttl=64 time=0.040 ms

把ens  33 挂掉 

xuegod@xuegod2 ~]$ nmcli connection down bondO-p1

成功取消激活连接 'bondO-p1'(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/11)

照样能ping  通 

xuegod@xuegod2 ~]$ nmcli connection up bondO-p1

开启以后它又回来了

[root@xuegod2 bonding]# cat bondO

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: ens33 (primary_reselect always)

Currently Active Slave: ens33

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: ens38

MII Status: up

在网卡中配置网关

vim ifcfg-bondO 

GATEWAY=192.168.24.1

配置dns 

vim /etc/resolv.conf

# Generated by NetworkManager

search cn

nameserver 114.114.114.114

重启网卡


12.5  网络内核相关参数调优

12。5.1   连接三次握手相关

  Client                            Server 

   syn         syn+ACK 

  ACK    

~

解决方法

1 )[root@xuegod2 ~]# vim /etc/sysctl.conf

写入

net.ipv4.tcp_synack_retries = 0

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_max_syn_backlog = 20480

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 10

fs.file-max = 819200

net.core.somaxconn = 65535

net.core.rmem_max = 1024123000

net.core.wmem_max = 16777126

net.core.netdev_max_backlog = 165536

net.ipv4.ip_local_port_range = 10000 65535

[root@xuegod2 ~]# sysctl  -p

[root@xuegod2 ~]# cat /proc/sys/net/ipv4/tcp_synack_retries

0   表示不要重发,默认为5 ,修改为0,表示不要重发,

net/ipv4/tcp_synack_retries =0  




注意,以下参数面对外网时,不要打开。因为副作用很明显

#当出现 半连接 队列溢出时向对方发送syncookies,调大 半连接 队列后没必要

net.ipv4.tcp_syncookies = 0

#TIME_WAIT状态的连接重用功能

net.ipv4.tcp_tw_reuse = 0

#时间戳选项,与前面net.ipv4.tcp_tw_reuse参数配合

net.ipv4.tcp_timestamps = 0

#TIME_WAIT状态的连接回收功能

net.ipv4.tcp_tw_recycle = 0

你可能感兴趣的:(3-12 CPU - 内存-IO -网络调优)