CPU 사용률이 적고 IO가 거의없는 높은로드 평균


17

리눅스에서 CPU를 거의 사용하지 않고 높은 평균 부하에 대한 일반적인 설명은 너무 많은 IO (또는 더 적절하게 중단 할 수 없는 휴면 )입니다.

적절한 CPU 사용 (~ 55-70 % 유휴)을 나타내지 만 IO가 거의없고, 컨텍스트 전환이 거의없고, 스와핑이없는 2 개의로드 평균보다 높은 2 코어 VM 클러스터에서 서비스를 실행하고 있습니다. 프로세스 상태 열에서 ps볼 수없는 폴링 D.

이 서비스는 유니콘에서 실행되는 루비 1.9입니다. 매우 빠른 평균 명령문 실행 (~ 0.5ms)을 제공하는 두 개의 업스트림 postgres 데이터베이스에 연결합니다. 이 서비스는 성능 테스트 네트워크에서 더 높은 스트레스 부하로 입증 된 것처럼 생산에서 약 2 배 높은 경과 시간을 기록하고 있습니다. Whack에서 보이지 않는 유일한 모니터링 신호는로드 평균 (물론 평균 응답 지속 시간)이며 다른 모든 것 (cpu, 메모리, io, 네트워크, cswitch, intr)은 공칭적이고 일치하는 예측입니다.

시스템은 Ubuntu 10.04.4 LTS "Lucid"입니다. uname은 Linux dirsvc0 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux입니다. 하이퍼 바이저는 VMWare ESX 5.1입니다.

업데이트 : @ewwhite가 요청한 추가 정보. 스토리지는 NetApp에 ​​연결된 vm 호스트의 NFS 마운트에 매핑되는 가상 디스크 장치입니다. 모든 표시는 중대한 디스크 IO가 발생하지 않는다는 것을 나타냅니다. 이 서비스는 네트워크 소켓 (~ 200KB / s)을 읽고 쓰고 일반적인 액세스 및 오류 로깅 (약 20KB / s의 속도)을 수행합니다. vm 호스트에는 한 쌍의 기가비트 포트가 있으며 2 개의 최상위 랙 스위치로 연결되며 각 기가비트 포트는 4 개의 기가비트 포트를 모두 구리로 코어 라우터에 다시 연결합니다. 각 vm 호스트에는 24 (4x6) 물리적 코어와 150GB의 메모리가 있으며 일반적으로 다양한 서비스를 실행하는 비슷한 크기의 vm 게스트 약 30 개를 호스트합니다. 프로덕션 환경에서 이러한 호스트는 메모리에서 오버 커밋되지 않으며 CPU에서는 약간만 커밋됩니다.

고부하를 설명하는 아이디어를 환영합니다.

다음은 오늘 정오 2 시간 창에서 sar 데이터를 추출한 것입니다.

sar -q #로드 평균

              runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:05:01 PM         1       173      1.15      2.41      2.48
12:15:01 PM         0       173      0.96      1.56      1.99
12:25:01 PM         2       173      2.60      2.49      2.21
12:35:01 PM         1       173      1.44      2.10      2.06
12:45:01 PM         0       173      3.66      3.31      2.56
12:55:01 PM         0       173      3.05      2.66      2.43
01:05:01 PM         0       174      1.37      2.35      2.36
01:15:01 PM         0       173      3.06      3.07      2.60
01:25:01 PM         2       173      5.03      6.50      4.50
01:35:01 PM         0       173      4.26      5.61      4.98
01:45:01 PM         8       173      4.61      4.46      4.48
01:55:01 PM         0       173      3.30      3.60      3.92
02:05:01 PM         1       173      2.51      2.62      3.15

sar # CPU

                CPU     %user     %nice   %system   %iowait    %steal     %idle
12:05:01 PM     all     31.31      0.60      2.18      0.02      0.00     65.89
12:15:01 PM     all     27.51      0.60      2.07      0.02      0.00     69.79
12:25:01 PM     all     28.09      0.61      1.90      0.03      0.00     69.36
12:35:01 PM     all     32.04      0.67      2.26      0.02      0.00     65.02
12:45:01 PM     all     33.44      0.69      2.61      0.02      0.00     63.24
12:55:01 PM     all     30.62      0.63      2.14      0.02      0.00     66.59
01:05:01 PM     all     29.42      0.61      2.07      0.03      0.00     67.87
01:15:01 PM     all     31.93      0.62      2.39      0.02      0.00     65.05
01:25:01 PM     all     41.60      0.82      3.65      0.03      0.00     53.90
01:35:01 PM     all     43.14      0.88      3.68      0.03      0.00     52.28
01:45:01 PM     all     38.38      0.79      3.43      0.02      0.00     57.39
01:55:01 PM     all     30.65      0.61      2.23      0.03      0.00     66.49
02:05:01 PM     all     29.17      0.58      2.10      0.03      0.00     68.12

sar -d # 디스크

                  DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util 
12:05:01 PM    dev8-0      1.37      0.00     35.94     26.14      0.00      3.09      1.98      0.27
12:15:01 PM    dev8-0      1.65      0.00     39.89     24.23      0.00      2.96      1.98      0.33
12:25:01 PM    dev8-0      1.26      0.00     33.39     26.57      0.00      2.89      1.79      0.22
12:35:01 PM    dev8-0      1.33      0.00     35.23     26.52      0.00      3.15      1.82      0.24
12:45:01 PM    dev8-0      1.68      0.00     42.31     25.23      0.00      2.95      1.89      0.32
12:55:01 PM    dev8-0      1.44      0.00     35.76     24.86      0.00      3.20      1.88      0.27
01:05:01 PM    dev8-0      1.43      0.00     35.57     24.93      0.00      2.17      1.46      0.21
01:15:01 PM    dev8-0      1.74      0.00     43.13     24.74      0.01      3.88      2.15      0.37
01:25:01 PM    dev8-0      1.39      0.00     35.36     25.44      0.01      3.65      2.42      0.34
01:35:01 PM    dev8-0      1.32      0.00     33.74     25.65      0.00      3.39      2.09      0.28
01:45:01 PM    dev8-0      1.48      0.00     37.20     25.20      0.01      3.92      2.26      0.33
01:55:01 PM    dev8-0      1.62      0.00     39.36     24.35      0.01      3.27      1.70      0.27
02:05:01 PM    dev8-0      1.42      0.00     34.72     24.51      0.00      3.28      2.13      0.30

sar -n # 네트워크

                IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:05:01 PM      eth0    365.52    359.86    236.91    227.35      0.00      0.00      0.00
12:15:01 PM      eth0    344.55    337.10    221.20    206.47      0.00      0.00      0.00
12:25:01 PM      eth0    357.81    352.76    229.83    216.22      0.00      0.00      0.00
12:35:01 PM      eth0    372.62    366.34    239.95    227.99      0.00      0.00      0.00
12:45:01 PM      eth0    388.65    378.51    252.11    235.81      0.00      0.00      0.00
12:55:01 PM      eth0    364.50    359.19    233.63    222.82      0.00      0.00      0.00
01:05:01 PM      eth0    361.08    353.88    231.75    218.89      0.00      0.00      0.00
01:15:01 PM      eth0    370.41    363.19    240.53    224.16      0.00      0.00      0.00
01:25:01 PM      eth0    357.67    352.20    230.37    213.57      0.00      0.00      0.00
01:35:01 PM      eth0    354.89    348.58    226.29    214.61      0.00      0.00      0.00
01:45:01 PM      eth0    355.49    344.98    228.41    211.27      0.00      0.00      0.00
01:55:01 PM      eth0    335.96    331.13    213.85    204.26      0.00      0.00      0.00
02:05:01 PM      eth0    323.03    314.49    208.12    194.81      0.00      0.00      0.00

sar -w # 컨텍스트 스위치

               proc/s   cswch/s
12:05:01 PM      0.97   2382.38
12:15:01 PM      2.58   2415.16
12:25:01 PM      0.84   2406.79
12:35:01 PM      0.84   2371.04
12:45:01 PM      2.70   2414.09
12:55:01 PM      0.84   2385.57
01:05:01 PM      1.20   2419.94
01:15:01 PM      2.57   2387.75
01:25:01 PM      0.85   2164.65
01:35:01 PM      0.84   2156.29
01:45:01 PM      2.53   2251.43
01:55:01 PM      1.01   2331.93
02:05:01 PM      0.96   2323.19

sar -B # 페이징

             pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
12:05:01 PM      0.00     17.97    549.43      0.00    289.21      0.00      0.00      0.00      0.00
12:15:01 PM      0.00     19.95   1179.08      0.00    405.61      0.00      0.00      0.00      0.00
12:25:01 PM      0.00     16.69    456.71      0.00    217.63      0.00      0.00      0.00      0.00
12:35:01 PM      0.00     17.61    480.42      0.00    240.01      0.00      0.00      0.00      0.00
12:45:01 PM      0.00     21.15   1210.09      0.00    424.96      0.00      0.00      0.00      0.00
12:55:01 PM      0.00     17.88    489.83      0.00    256.39      0.00      0.00      0.00      0.00
01:05:01 PM      0.00     17.79    624.89      0.00    387.26      0.00      0.00      0.00      0.00
01:15:01 PM      0.00     21.57   1168.87      0.00    393.34      0.00      0.00      0.00      0.00
01:25:01 PM      0.00     17.68    466.03      0.00    235.07      0.00      0.00      0.00      0.00
01:35:01 PM      0.00     16.87    435.24      0.00    199.43      0.00      0.00      0.00      0.00
01:45:01 PM      0.00     18.60   1125.69      0.00    432.85      0.00      0.00      0.00      0.00
01:55:01 PM      0.00     19.68    596.62      0.00    272.75      0.00      0.00      0.00      0.00
02:05:01 PM      0.00     17.36    511.80      0.00    243.83      0.00      0.00      0.00      0.00

sar -r # 메모리

            kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
12:05:01 PM   1017364   3041608     74.94    225564   1773324   1194728     16.64
12:15:01 PM   1014992   3043980     74.99    225564   1777268   1193688     16.63
12:25:01 PM   1009504   3049468     75.13    225564   1781360   1194504     16.64
12:35:01 PM    999484   3059488     75.38    225564   1785652   1194520     16.64
12:45:01 PM    994764   3064208     75.49    225564   1790136   1194864     16.65
12:55:01 PM    993772   3065200     75.52    225564   1794288   1194296     16.64
01:05:01 PM    993868   3065104     75.51    225564   1798584   1193428     16.63
01:15:01 PM    985016   3073956     75.73    225564   1802708   1194388     16.64
01:25:01 PM    992316   3066656     75.55    225564   1806804   1192996     16.62
01:35:01 PM    971732   3087240     76.06    225564   1810784   1194272     16.64
01:45:01 PM    968816   3090156     76.13    225564   1815036   1194556     16.64
01:55:01 PM    967968   3091004     76.15    225564   1818716   1194924     16.65
02:05:01 PM    966324   3092648     76.19    225564   1822452   1194516     16.64

ps aufx

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    Jan28   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jan28   0:01  \_ [migration/0]
root         4  0.0  0.0      0     0 ?        S    Jan28   1:01  \_ [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [watchdog/0]
root         6  0.0  0.0      0     0 ?        S    Jan28   0:01  \_ [migration/1]
root         7  0.0  0.0      0     0 ?        S    Jan28   0:27  \_ [ksoftirqd/1]
root         8  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [watchdog/1]
root         9  0.0  0.0      0     0 ?        S    Jan28   0:37  \_ [events/0]
root        10  0.0  0.0      0     0 ?        S    Jan28   0:33  \_ [events/1]
root        11  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [cpuset]
root        12  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [khelper]
root        13  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [async/mgr]
root        14  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [pm]
root        16  0.0  0.0      0     0 ?        S    Jan28   0:02  \_ [sync_supers]
root        17  0.0  0.0      0     0 ?        S    Jan28   0:04  \_ [bdi-default]
root        18  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kintegrityd/0]
root        19  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kintegrityd/1]
root        20  0.0  0.0      0     0 ?        S    Jan28   0:03  \_ [kblockd/0]
root        21  0.0  0.0      0     0 ?        S    Jan28   0:12  \_ [kblockd/1]
root        22  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kacpid]
root        23  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kacpi_notify]
root        24  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kacpi_hotplug]
root        25  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ata/0]
root        26  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ata/1]
root        27  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ata_aux]
root        28  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ksuspend_usbd]
root        29  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [khubd]
root        30  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kseriod]
root        31  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kmmcd]
root        34  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [khungtaskd]
root        35  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kswapd0]
root        36  0.0  0.0      0     0 ?        SN   Jan28   0:00  \_ [ksmd]
root        37  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [aio/0]
root        38  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [aio/1]
root        39  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ecryptfs-kthrea]
root        40  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [crypto/0]
root        41  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [crypto/1]
root        44  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [pciehpd]
root        45  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [scsi_eh_0]
root        46  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [scsi_eh_1]
root        47  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kstriped]
root        50  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kmpathd/0]
root        51  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kmpathd/1]
root        52  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kmpath_handlerd]
root        53  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ksnapd]
root        54  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kondemand/0]
root        55  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kondemand/1]
root        56  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kconservative/0]
root        57  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kconservative/1]
root       213  0.0  0.0      0     0 ?        S    Jan28   0:24  \_ [mpt_poll_0]
root       274  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [mpt/0]
root       295  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [scsi_eh_2]
root       310  0.0  0.0      0     0 ?        S    Jan28   1:41  \_ [jbd2/sda1-8]
root       311  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ext4-dio-unwrit]
root       312  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [ext4-dio-unwrit]
root       342  0.0  0.0      0     0 ?        S    Jan28   0:54  \_ [flush-8:0]
root       627  0.0  0.0      0     0 ?        S    Jan28   0:00  \_ [kpsmoused]
root     18160  0.0  0.0      0     0 ?        S    Feb14   0:00  \_ [rpciod/0]
root     18161  0.0  0.0      0     0 ?        S    Feb14   0:00  \_ [rpciod/1]
root     18162  0.0  0.0      0     0 ?        S    Feb14   0:00  \_ [nfsiod]
root         1  0.0  0.0  61824  2872 ?        Ss   Jan28   0:11 /sbin/init
root       372  0.0  0.0  16904   860 ?        S    Jan28   0:00 upstart-udev-bridge --daemon
root       375  0.0  0.0  17072  1012 ?        S<s  Jan28   0:00 udevd --daemon
root      1054  0.0  0.0  16860   672 ?        S<   Jan28   0:00  \_ udevd --daemon
root     18163  0.0  0.0  17068   832 ?        S<   Feb14   0:00  \_ udevd --daemon
daemon     654  0.0  0.0   8256   644 ?        Ss   Jan28   0:00 portmap
root       788  0.0  0.0  49260  2592 ?        Ss   Jan28   0:00 /usr/sbin/sshd -D
root      8095  0.0  0.1 100888  4068 ?        Ss   16:03   0:00  \_ sshd: root@pts/0    
root      8157  0.0  0.0  11212  2084 pts/0    Ss   16:03   0:00      \_ -bash
root     15777  0.0  0.0   7172  1084 pts/0    R+   17:28   0:00          \_ ps aufx
statd      808  0.0  0.0  10392   844 ?        Ss   Jan28   0:00 rpc.statd -L
root       829  0.0  0.0    140    32 ?        Ss   Jan28   0:16 runsvdir -P /etc/service log: .....................................................................................................
root       834  0.0  0.0    116    32 ?        Ss   Jan28   0:00  \_ runsv chef-client
root       838  0.0  0.0    136    48 ?        S    Jan28   0:00      \_ svlogd -tt ./main
root     30898  0.2  1.8 192296 75736 ?        S    01:57   2:25      \_ /usr/bin/ruby1.8 /usr/bin/chef-client -i 1800 -s 60 -L /var/log/chef/client.log
root       832  0.0  0.0   6080   656 tty4     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty4
root       841  0.0  0.0   6080   656 tty5     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty5
root       844  0.0  0.0   6080   656 tty2     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty2
root       845  0.0  0.0   6080   660 tty3     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty3
root       847  0.0  0.0   6080   656 tty6     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty6
root       849  0.0  0.0  21076  1044 ?        Ss   Jan28   0:04 cron
daemon     853  0.0  0.0  18884   468 ?        Ss   Jan28   0:00 atd
root       864  0.0  0.0  11284   640 ?        Ss   Jan28   2:10 /usr/sbin/irqbalance
root       890  0.0  0.0 112412  1908 ?        Ssl  Jan28   5:09 /usr/sbin/automount
root       908  0.0  0.0  28016   976 ?        Ss   Jan28   0:00 nginx: master process /usr/sbin/nginx
www-data   910  0.0  0.0  64532  3064 ?        S    Jan28   0:00  \_ nginx: worker process
root       922  0.0  0.0 169668  2584 ?        Ssl  Jan28   0:34 /usr/sbin/nscd
mail       943  0.0  0.0  11888   648 ?        S    Jan28   0:00 /usr/sbin/nullmailer-send -d
root       971  0.0  1.1 152036 46264 ?        Sl   Jan28  36:07 splunkd -p 8089 start
root       972  0.0  0.0  49180  3512 ?        Ss   Jan28   0:00  \_ splunkd -p 8089 start
root      1160  0.0  0.0  14888  1276 ?        Ss   Jan28  19:31 /usr/lib/vmware-tools/sbin64/vmware-guestd --background /var/run/vmware-guestd.pid
ntp       1214  0.0  0.0  19700  1268 ?        Ss   Jan28   1:21 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -c /var/lib/ntp/ntp.conf.dhcp -u 103:107
root      1231  0.0  0.3  21164 12980 ?        SLs  Jan28   0:00 /usr/sbin/memlockd -u memlockd
scs       1270  1.2  2.3 187788 96228 ?        SNl  Jan28 537:27 /usr/bin/ruby /opt/wp/roles/scs/src/dev/scs/bin/server.rb -p 8843
root      1309  0.0  0.0   6080   656 tty1     Ss+  Jan28   0:00 /sbin/getty -8 38400 tty1
dirsvc   27448  0.1  1.2 177408 50748 ?        Sl   Feb20   8:57 narwhal master --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.19/confi
dirsvc   13003  2.5  1.2 180012 49128 ?        Sl   16:57   0:47  \_ narwhal worker[1] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13460  2.5  1.2 180108 49236 ?        Sl   17:05   0:36  \_ narwhal worker[9] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13637  2.4  1.2 180008 49096 ?        Sl   17:08   0:29  \_ narwhal worker[3] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13650  2.9  1.2 180172 49420 ?        Sl   17:08   0:35  \_ narwhal worker[11] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.
dirsvc   13701  3.1  1.2 180172 49188 ?        Sl   17:10   0:35  \_ narwhal worker[13] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.
dirsvc   13731  2.7  1.2 181556 50628 ?        Sl   17:10   0:29  \_ narwhal worker[7] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13770  2.8  1.2 179400 50352 ?        Sl   17:11   0:29  \_ narwhal worker[8] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13778  3.3  1.2 180104 49172 ?        Sl   17:11   0:34  \_ narwhal worker[5] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13826  2.6  1.2 181556 50672 ?        Sl   17:12   0:25  \_ narwhal worker[0] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13939  2.8  1.2 177948 48848 ?        Sl   17:13   0:25  \_ narwhal worker[4] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   13971  3.2  1.4 189052 58292 ?        Sl   17:13   0:28  \_ narwhal worker[12] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.
dirsvc   13982  2.5  1.2 177792 48780 ?        Sl   17:14   0:22  \_ narwhal worker[6] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   15316  3.0  1.2 180072 49128 ?        Sl   17:20   0:15  \_ narwhal worker[2] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.1
dirsvc   15381  2.0  1.2 179944 48928 ?        Sl   17:21   0:08  \_ narwhal worker[14] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.
dirsvc   15743  3.5  1.1 177624 48596 ?        Sl   17:28   0:00  \_ narwhal worker[10] --port 8862 -c /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.
dirsvc   27461  0.1  1.3 235884 54744 ?        Sl   Feb20   9:20 /opt/ruby-1.9.2/bin/ruby /opt/wp/roles/directory/src/dev/directory/vendor/bundle/ruby/1.9.1/gems/wp-directory-svc-2.1.19/gem-bin/wo
root     11068  0.0  0.0 130480  1720 ?        Sl   04:20   0:00 rsyslogd -c4
zabbix   18062  0.0  0.0   9908   728 ?        SN   11:41   0:00 /usr/sbin/zabbix_agentd
zabbix   18063  0.0  0.0   9908   756 ?        SN   11:41   0:12  \_ /usr/sbin/zabbix_agentd
zabbix   18064  0.0  0.0   9980  1044 ?        SN   11:41   0:03  \_ /usr/sbin/zabbix_agentd
zabbix   18065  0.0  0.0   9980  1044 ?        SN   11:41   0:03  \_ /usr/sbin/zabbix_agentd
zabbix   18066  0.0  0.0   9980  1044 ?        SN   11:41   0:03  \_ /usr/sbin/zabbix_agentd
zabbix   18067  0.0  0.0   9908   660 ?        SN   11:41   0:00  \_ /usr/sbin/zabbix_agentd

편집 : 요청에 의한 추가 정보 :

$ dpkg --get-selections | grep vmware
vmware-open-vm-tools-common         install
vmware-open-vm-tools-kmod-2.6.32-32-server  install

$ cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 44
model name  : Intel(R) Xeon(R) CPU           X5660  @ 2.80GHz
stepping    : 2
cpu MHz     : 2800.099
cache size  : 12288 KB
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips    : 5600.19
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 44
model name  : Intel(R) Xeon(R) CPU           X5660  @ 2.80GHz
stepping    : 2
cpu MHz     : 2800.099
cache size  : 12288 KB
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips    : 5600.19
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

기본 스토리지, 연결 매체, 하드웨어, VMware 버전, VMware Tools 설치 여부 등에 대한 언급은 무시했습니다.
ewwhite

@ewwhite 님이 요청한 정보를 추가했습니다. (세계가 너무 커서 설명 할 수 없기 때문에 "등"에 대답 할 수 없다는 점을 제외하고 :)
dbenhur

3 년 후,이 서비스와 호스팅 아키텍처는 오래 전부터 사라졌지 만 수수께끼의 문제는 남아 있습니다. 필자는 최근 Linux 스케줄러 버그에 대한이 백서를 읽고 vm 실행과 이러한 버그의 상호 작용이 범인 이었는지 궁금합니다. ece.ubc.ca/~sasha/papers/eurosys16-final29.pdf
dbenhur

인터넷 검색 시이 Q가 나오기 때문에 Brendan Gregg의 Linux "로드 평균"에 대한 훌륭한 기사에 대한 링크를 남기고 싶습니다 .
Nickolay

답변:


11

로드 평균은 실행 큐에서 대기중인 프로세스를 기반으로합니다. 즉, 소수 시간 조각을 사용하는 프로세스가있는 경우 CPU 사용률이 높지 않아도로드 평균이 높습니다.

가장 좋은 예는 메일입니다. 메시지를 보내는 데 필요한 CPU 시간은 매우 제한적이지만 수천 개의 메일 조각이 시스템 주위로 이동하는 경우 (특히 메일 데몬이 포크로 처리하는 경우) 실행 큐가 매우 길어집니다. 일반적으로로드 평균 25, 50 ~ 100 이상의로드 및 메일 서버가 제대로 작동하는 것이 일반적입니다.

웹 서버의 경우 페이지 응답 시간을 기본 메트릭으로 사용하고로드 평균에 대해 걱정하지 마십시오. 최신 스케줄러에서 평균 코어 수의 두 배 미만의로드는 일반적으로 부정적인 영향을 미치지 않습니다. VM 당 코어 수와 총 VM 수를 실험 해 볼 수 있습니다. 일부 응용 프로그램은 몇 대의 컴퓨터에서 많은 코어의 이점을 얻을 수 있고 다른 응용 프로그램은 적은 수의 코어와 많은 인스턴스에서 더 좋습니다.


1
답변 주셔서 감사합니다. "분수 시간 조각"은 무엇입니까? 스케줄러를 이해하면 프로세스가 CPU에 할당되어 다음 예약 간격까지 또는 시스템을 차단하는 블로킹 시스템 호출을 할 때까지 해당 CPU에서 실행됩니다. 내 CPU는 70 %의 유휴 상태이지만 실행 대기열 길이는 평균 2 이상입니다.이 즉시 실행 가능한 프로세스가 대부분 유휴 CPU에 예약되지 않는 이유는 무엇입니까?
dbenhur

웹 서버는 아니지만 웹 서비스라고 덧붙입니다. 요청을 수신 및 역 직렬화, 업스트림 서비스 / 데이터베이스로 디스패치 수행, 업스트림의 응답을 기반으로 결과 계산, 응답 직렬화, 로그 낙서 msg. 평균 요청 지속 시간 ~ 60ms, 90 % 200ms, 99 % 500ms +. 우리는 비슷한 vm 컨테이너에서 유사한 프로파일을 가진 많은 다른 서비스를 가지고 있는데, 이는로드와 CPU % 사이에서 이러한 연결 끊김을 나타내지 않습니다.
dbenhur

리눅스는 가상 CPU에 대해서만 일정을 계획하고 있으며 ESX는 자체 알고리즘을 통해 실제 CPU에 예약합니다. 비교 가능한 vm은 얼마나 유사합니까? 다른 부하에 대해 매우 유사한 CPU? 동일한 메모리 사용량?
Matt

@mindthemonkey VM에는 최소한 12 가지의 서로 다른 서비스가 있습니다. 일부는 실질적으로 다른 프로파일을 가지고 있지만 대부분은이 서비스와 매우 유사합니다. 4GB mem, 2 virt cpus, 보통 IO (대부분 네트워크 및 기본 로깅)는 일일 곡선을 통해 30-60 % CPU utlization을 실행합니다. IO 및 / 또는 메모리 집약적 노드 (DB, SOLR)는 전용 호스트를 얻습니다. 이러한 다른 서비스 vm의 대부분은 cpu %와로드 사이의 예상 상관 관계를 보여줍니다 (적어도 100 %에서 건강하게 떨어져있는 한).
dbenhur 2019

@mindthemonkey 게스트 스케줄러가 virt cpu 만 제어하고 ESX가 더 큰 컨텍스트에서 스케줄링하는 동안 이것이 cpu % 및 부하 계산에 실제로 미치는 영향을 알 수 없습니다. 둘 다 일정 빈도로 수집 한 샘플을 기반으로하며 게스트가 하이퍼 바이저 예약에 의해 선점 된 정도까지 실제 작업이 수행되는 슬라이스와 게스트가 샘플을 가져 오는 슬라이스에 모두 영향을 미칩니다.
dbenhur 2019

1

실제 쉘 평균을 모니터하기 위해 다음 쉘 명령을 사용하면이 현상에 대해 다른 견해를 가질 수 있습니다. procs_running이 예상보다 훨씬 높을 수 있습니다.

while true; do cat /proc/loadavg ; cat /proc/stat| grep procs; done

1

VM에서 성능 문제가 발생하면 먼저 관리자 측과 VM 모두에서 문제에 접근해야합니다. 명심해야 할 또 다른 사항은 VM의 시간 관리가 정확하지 않다는 것입니다. 이는 VM에서 측정 된 통계가 올바르지 않을 수도 있음을 의미합니다.

이 VM의 CPU 및 I / O 통계는 무엇입니까? CPU 준비 카운터에주의하십시오-5 % 미만이어야합니다. 어떤 버전의 ESX를 실행하고 있습니까? 테스트 및 제작에서 하드웨어 아키텍처는 무엇입니까?

VM에서는 perf 를 사용하여 응용 프로그램에서 커널까지 모든 것을 프로파일 링 하고 불꽃 그래프로 출력을 시각화 할 수 있습니다


5 년 전 문제를 해결하기 위해 시간을내어 주셔서 감사합니다. 문제의 시스템과 소프트웨어는 더 이상 일하지 않는 회사에 속하며 VM 스택과 해당 서비스는 더 이상 운영되지 않습니다. :) 원래 질문에 이미 많은 CPU 및 IO 정보가 게시되어 있습니다. 성능과 화염 사진에 관한 Brendan의 공개 작업과 박람회는이 질문을 1 년 이상 발표했습니다.
dbenhur

1
문제 없어요. 아마도 누군가에게 유용 할 것입니다.
Mircea Vutcovici

0

그것은 특히 높은 평균 부하처럼 들리지 않습니다. 추적 iotop하려면 작업에 가장 적합한 도구 일 것입니다.


iotop지루한 모든 것을 약 0 말한다
dbenhur

CPU 수를 초과하는 평균로드는 CPU를 실행하는 것보다 실행 대기중인 프로세스가 더 많다는 것을 의미합니다. 2.0보다 많은 간격과 4에서 6.5까지의 여러 la-5가 보입니다. 이것은 종종 다른 프로세스보다 CPU에 지연되는 프로세스를 가지고 있으며 CPU 용량 부족으로 원치 않는 대기 시간을 의미합니다. 나는 일반적으로 시스템이 100 % CPU 포화 상태에 도달하기 시작할 때까지로드 평균과 CPU %가 서로 연관 될 것으로 예상합니다. 그 후로드 평균은 100 % 사용 중이 아니라 시스템이 과도하게 커밋 된 정도를 나타 내기 때문에 더 나은 신호입니다.
dbenhur 2013

0

나는 당신과 매우 비슷한 시나리오를 다루었습니다. 필자의 경우 문제가되는 VM 블록 장치의 IO 스케줄러를 NOOP 스케줄러로 변경 한 후로드 평균이 떨어졌습니다. 이 스케줄러는 하이퍼 바이저가 자체 IO 스케줄링 알고리즘을 적용 할 때 잘 작동하는 FIFO 대기열입니다. 두 번 다시 주문할 필요가 없습니다.

그 말로, 문제가있는 VM에서 여전히 느린 키보드 이벤트를 처리하고 있으므로 실제 문제를 해결하지 않고 높은 평균 부하 만 제거했다고 생각합니다. 근본 원인을 찾으면이 답변을 확실히 업데이트 할 것입니다.

사용 가능한 스케줄러 (및 사용중인 [스케줄러])를 나열하십시오.

cat /sys/block/sdX/queue/scheduler
noop anticipatory deadline [cfq]

다음과 같이 변경하십시오.

echo noop > /sys/block/sdX/queue/scheduler

지속적으로 유지하려면 elevator=noopVM의 커널 부팅 매개 변수 에 추가 해야합니다.


-2

로드 평균은 CPU를 기다리는 실행 가능한 프로세스 수입니다. I / O를 기다리는 프로세스는 전혀 계산되지 않습니다. "일반적인 설명"은 잘못되었다.


3
Linux는로드 계산시 해석 할 수없는 절전 상태의 프로세스를 포함합니다. 이러한 프로세스는 일반적인 프로세스 검사 도구에서 상태 'D'로 표시됩니다. 이 상태는 일반적으로 디스크 또는 네트워크 IO를 기다리는 장치 드라이버가 사용합니다. "일반적인 설명"은 리눅스에서는 사실이지만 다른 유닉스에서는 그렇지 않습니다.
dbenhur 2019


1
주석은 앞서 그는 또한 최근에 방법에 대한 몇 가지 멋진 고고학했던 것을 생각 나게 브렌든 그레그의 일부 성능 작업 참조 무정전 수면 리눅스의로드 평균에 상처
dbenhur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.