T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

SWAP�����뷣

�� �𶡱ʼ����ߣ����� ����ʱ�䣺2012-11-28 | ���壺�� �� С��
[����]˵��������һ̨Apache��������������MaxClients�������ù��󣬲���ǡ�������������������������ڴ汻�Ĺ⣬�Ӷ�����SWAP�������������������յ���崻��� ��Щ�꣬YouTube������SWAP�������Ź������ǵ�ʱ�Ľ���������...

˵��������һ̨Apache��������������MaxClients�������ù��󣬲���ǡ�������������������������ڴ汻�Ĺ⣬�Ӷ�����SWAP�������������������յ���崻���

 

����ν��SWAP������֮���£�����֮�أ�����֮�������ɲ���Ҳ��

��Щ���߿��Լ���SWAP

�������뵽�ľ���free�����ˣ���ָ���˵�ǰSWAP��ʹ��������

shell> free -m
             total       used       free
Swap:        34175      11374      22801

��һ�����õ���sar��������г�ϵͳ�ڸ���ʱ����SWAPʹ��������

shell> sar -r
kbswpfree kbswpused  %swpused  kbswpcad
 23345644  11650572     33.29   4656908
 23346452  11649764     33.29   4656216
 23346556  11649660     33.29   4650308
 23346932  11649284     33.29   4649888
 23346992  11649224     33.29   4648848

����free������sar������ʾ�Ķ�����ʵʱ���ݣ�������Ҫ������ʹ��vmstat���

shell> vmstat 1
-----------memory------------- ---swap--
  swpd   free   buff   cache     si   so
11647532 123664 305064 7193168    0    0
11647532 123672 305064 7193172    0    0
11647532 125728 305064 7193468    0    0
11647532 125376 305064 7193476    0    0
11647532 124508 305068 7193624    0    0

ÿ��ˢ��һ�ν�������SWAPһ�����г����������ݣ�����si��so�Ľ��ͣ��������£�

  • si: Amount of memory swapped in from disk (/s).
  • so: Amount of memory swapped to disk (/s).

��������һֱ���㵱Ȼ���ò����ˣ�ż����Ϊ��Ҳûɶ����������һֱ��Ϊ�㡣

ǰ�����ܵķ����������Ķ���SWAP�������������������������鿴��������Щ����ʹ����SWAP��Ӧ�����β����أ����������е㼬�֣��������о�һ�£�

����Ϣ��top�������ṩ������Ϣ������ȱʡ��û����ʾ��������Ҫ����һ�£�

  1. ����top��
  2. ����f������ѡ���ֶεĽ��棻
  3. ����p��ѡ����SWAP���ֶΣ�
  4. ���س�ȷ�ϡ�

����Ϣ��top�����ṩ��SWAP��Ϣֻ��һ������ֵ�����߸�ֱ��һ������˵���������Dz����ŵģ���top��SWAP�ļ��㹫ʽ�ǣ�SWAP=VIRT-RES����

BTW������֮�£�top���ġ�nFLT���ֶθ��м�ֵ������ʾPageFault�Ĵ�����

�ǵ��������ܲ��ܻ�ȡ�����̵�SWAP�����أ����ż��������룺

#!/bin/bash

cd /proc

for pid in [0-9]*; do
    command=$(cat /proc/$pid/cmdline)

    swap=$(
        awk '
            BEGIN  { total = 0 }
            /Swap/ { total += $2 }
            END    { print total }
        ' /proc/$pid/smaps
    )

    if (( $swap > 0 )); then
        if [[ "${head}" != "yes" ]]; then
            echo -e "PID\tSWAP\tCOMMAND"
            head="yes"
        fi

        echo -e "${pid}\t${swap}\t${command}"
    fi
done

˵������ʹ��rootȨ�������д˽ű���

��Щ���ؿ���Ӱ��SWAP

�ڴ治�����ɻ�SWAP������Щʱ�򣬼��㿴��ȥ�ڴ��ܳ�ԣ�������ܻ�SWAP���������󱻳�ΪSWAP Insanity������������Ҫ�����¼��㣺

Swappiness����ʧ

ʵ���ϣ��������ڴ治��ʱ��ϵͳ������ѡ����һ����ͨ��SWAP���ͷ��ڴ棬��һ����ɾ��Cache�е�Page���ͷ��ڴ档һ���ܳ����������ǣ����������ļ���ʱ����ʱ���ᷢ��SWAP������������Ϊ�����ļ���ʱ����ϵͳ�����ļ�������Cache�а�Page�����棬��ʱһ�������ڴ治�㣬ϵͳ����������ͨ��SWAP���ͷ��ڴ档

�ں��е�swappiness����������������������Ϊ��ȱʡ�����£�swappiness��ֵ��60��

shell> sysctl -a | grep swappiness
vm.swappiness = 60

���ĺ����ǣ�����ϵͳ��Ҫ�ڴ棬�аٷ�֮��ʮ�ĸ���ִ��SWAP��֪������һ�㣬���Ǻ���Ȼ�Ļ��뵽�������ķ���������ִ��SWAP�ĸ��ʣ�

shell> echo "vm.swappiness = 0" >> /etc/sysctl.conf
shell> sysctl -p

��������ȷ���Խ���ִ��SWAP�ĸ��ʣ���������ζ����Զ����ִ��SWAP��

NUMA������

NUMA��MySQL�����кܶ����ۣ����ﲻ��˵�ˣ�ֱ��NUMA��SWAP�Ķ�Թ������

�����˽�һ��NUMA�����ĵ�numactl���

shell> numactl --hardware
available: 2 nodes (0-1)
node 0 size: 16131 MB
node 0 free: 100 MB
node 1 size: 16160 MB
node 1 free: 10 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

���Կ���ϵͳ�������ڵ㣨��ʵ������������CPU�������Ǹ��Է���16G�ڴ棬�������Žڵ㻹ʣ100M�ڴ棬һ�Žڵ㻹ʣ10M�ڴ档����������һ����Ҫ11M�ڴ��Ľ��̣�ϵͳ�����ָ���һ�Žڵ���ִ�У���ʱ��Ȼϵͳ�����Ŀ����ڴ����ڸý�����Ҫ���ڴ棬����Ϊһ�Žڵ㱾��ʣ���Ŀ����ڴ治�㣬������Ȼ���ܻᴥ��SWAP��Ϊ��

��Ҫ˵����һ���£�numactl�����п����ĸ��ڵ�ʣ���ڴ���ʱ������Cache�ڴ��ģ�������Ҫ֪�������ǿ�������drop_caches�������ͷ�����

shell> sysctl vm.drop_caches=1

ע���ⲽ�������ܻ�����ϵͳ���ص��𵴡�

��������ȷ��һ�����̵Ľڵ㼰�ڴ��������������������ֳɵ��ű���

����Ҫ����NUMA��SWAP��Ӱ�죬���򵥵ķ����������������̵�ʱ����������

shell> numactl --interleave=all ...

���⣬�ں˲���zone_reclaim_modeͨ��Ҳ����Ҫ����ij���ڵ������ڴ治��ʱ������Ϊ0�Ļ�����ôϵͳ�������ڴ�Զ�̽ڵ������ڴ棻����Ϊ1�Ļ�����ôϵͳ�������ڴӱ��ؽڵ�����Cache�ڴ档����ʱ����Cache�����ܺ���Ҫ������0��һ�����õ�ѡ����

shell> echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf
shell> sysctl -p

������������һЩ����MySQL��SWAP�����ۣ���������SWAP��һ�����壬�Ƽ���

����Memcached��������ʱ������������kѡ����ܱ���ʹ��SWAP����Ҫ���á�

��Щ�꣬YouTube������SWAP�������Ź������ǵ�ʱ�Ľ��������ܼ��ˣ�ɾ��SWAP�����ò�˵�������ո��˵��󣬿�ϧ��ܿܿ���������Ƕ��ԣ���ʵ����̫Σ���ˣ���Ϊ����һ����һ���ڴ��ľ�������û��SWAP�Ļ��壬ϵͳ��������ʼOOM���������ܻ����������ø��Ӹ��ӣ����Դ��һ��ǰ����ؼ�������ʵ�˰ɡ�

ԭ�ģ�http://huoding.com/2012/11/08/198

  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:7.75ms QueryTime:7