Trung bình tải cao với việc sử dụng CPU khiêm tốn và hầu như không có IO


17

Giải thích thông thường cho tải trung bình cao với ít sử dụng cpu trong linux là quá nhiều IO (hoặc giấc ngủ không bị gián đoạn đúng hơn ).

Tôi có một dịch vụ chạy trên một cụm máy ảo 2 lõi thể hiện mức độ sử dụng CPU khiêm tốn (~ 55-70% nhàn rỗi) nhưng cao hơn trung bình 2 tải trong khi trải nghiệm gần IO, chuyển đổi ngữ cảnh khiêm tốn và không bị tráo đổi. Bỏ phiếu với pstôi không bao giờ thấy Dtrong cột trạng thái quá trình.

Dịch vụ này là ruby ​​1.9 chạy dưới kỳ lân. Nó kết nối với hai cơ sở dữ liệu postgres ngược dòng đang cung cấp các thực thi câu lệnh avg rất nhanh (~ 0,5ms). Dịch vụ này đang ghi lại thời lượng yêu cầu đã qua trong sản xuất cao gấp đôi so với mức độ căng thẳng cao hơn trên mạng thử nghiệm hiệu suất của chúng tôi. Tín hiệu giám sát duy nhất có vẻ ngoài của whack là tải trung bình (và tất nhiên là thời gian đáp ứng avg), mọi thứ khác (cpu, bộ nhớ, io, mạng, cswitch, int) là các phép chiếu danh nghĩa và phù hợp.

Hệ thống là Ubuntu 10.04.4 LTS "Lucid". uname là Linux dirsvc0 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux. Hypervisor là VMWare ESX 5.1.

CẬP NHẬT: Thông tin thêm theo yêu cầu của @ewwhite. Bộ lưu trữ là một thiết bị đĩa ảo ánh xạ tới ngàm NFS trên máy chủ vm được gắn vào NetApp. Tôi sẽ chỉ ra rằng tất cả các dấu hiệu cho thấy không có IO đĩa đáng kể nào xảy ra. Dịch vụ đọc và ghi vào các ổ cắm mạng (~ 200KB / giây) và thực hiện truy cập thông thường và ghi nhật ký lỗi (với tốc độ khoảng 20KB / giây). Máy chủ vm có một cặp cổng gigabit đi đến hai đầu của công tắc giá, mỗi cổng đã gắn bốn cổng gigabit trở lại bộ định tuyến lõi, tất cả đều bằng đồng. Mỗi máy chủ vm có 24 (4x6) lõi vật lý và 150GB bộ nhớ và thường lưu trữ khoảng 30 khách vm có kích thước tương tự chạy nhiều dịch vụ khác nhau. Trong sản xuất, các máy chủ này không bao giờ được cam kết quá mức trên bộ nhớ và chỉ cam kết quá mức trên cpu.

Tôi hoan nghênh các ý tưởng để giải thích tải cao.

Dưới đây là một số trích xuất dữ liệu sar từ một cửa sổ hai giờ giữa ngày hôm nay:

sar -q # tải trung bình

              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 # đĩa

                  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 # mạng

                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 # chuyển đổi bối cảnh

               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 # phân trang

             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 # bộ nhớ

            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

EDIT: Thông tin thêm theo yêu cầu:

$ 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:

Bạn đã bỏ qua việc đề cập bất cứ điều gì về lưu trữ cơ bản, phương tiện kết nối, phần cứng, phiên bản của VMware, cho dù VMware Tools đã được cài đặt, v.v.
ewwhite

@ewwhite thêm thông tin yêu cầu. (Ngoại trừ tôi không thể trả lời "vv" vì thế giới quá lớn để mô tả đầy đủ. :)
dbenhur

Ba năm sau, dịch vụ này và kiến ​​trúc lưu trữ của nó đã mất từ ​​lâu, nhưng câu hỏi khó hiểu vẫn còn. Gần đây tôi đã đọc bài viết này về các lỗi lập lịch của Linux và tự hỏi liệu sự tương tác của các lỗi này với việc thực thi vm có thể là thủ phạm hay không. ece.ubc.ca/~sasha/ con / eurosys16
dbenhur

Vì Q này xuất hiện khi Googling, tôi muốn để lại một liên kết đến bài viết xuất sắc về "mức trung bình tải" của Linux bởi Brendan Gregg , trong đó có mô tả toàn diện nhất về trung bình tải (và thay vào đó là số liệu để xem).
Nickolay

Câu trả lời:


11

Tải trung bình dựa trên các quy trình chờ trong hàng đợi chạy. Điều đó có nghĩa là nếu bạn có các quy trình sử dụng các lát thời gian phân đoạn thường xuyên, bạn có thể thấy mức trung bình tải cao mà không cần sử dụng CPU cao.

Ví dụ tốt nhất về điều này là thư. Lượng thời gian CPU yêu cầu để gửi tin nhắn rất hạn chế, nhưng khi hàng ngàn mẩu thư đang di chuyển xung quanh hệ thống (đặc biệt là nếu daemon thư sẽ xử lý từng quy trình), hàng đợi chạy sẽ rất lâu. Người ta thường thấy các máy chủ mail phản hồi tốt, hoạt động tốt với tải trung bình từ 25, 50 đến hơn 100.

Đối với máy chủ web, tôi sẽ sử dụng thời gian phản hồi của trang làm số liệu chính, đừng lo lắng về tải trung bình. Theo lịch trình hiện đại, tải trung bình ít hơn hai lần số lượng lõi thường sẽ không có tác động tiêu cực. Bạn có thể muốn thử nghiệm số lượng lõi trên mỗi VM so với tổng số VM. Một số ứng dụng sẽ được hưởng lợi từ nhiều lõi trên một số máy, một số khác tốt hơn ở một số ít lõi và nhiều trường hợp.


1
Cám ơn phản hồi của bạn. Cái gì tạo thành một "lát cắt thời gian phân đoạn"? Theo tôi hiểu bộ lập lịch, một quy trình được gán cho một cpu và chạy trên cpu đó cho đến khoảng thời gian lập lịch tiếp theo hoặc cho đến khi nó thực hiện một cuộc gọi hệ thống chặn khiến nó sinh ra. Đó là cpu của tôi không hoạt động 70% thời gian nhưng chiều dài hàng đợi chạy của tôi trung bình trên 2, điều đó làm tôi bối rối, tại sao các quy trình sẵn sàng chạy này chỉ được lên lịch cho các cpus chủ yếu nhàn rỗi?
dbenhur

Tôi sẽ thêm rằng đây là một dịch vụ web, mặc dù không phải là một máy chủ web. Nó có một hồ sơ thực hiện gần giống với một loạt các dịch vụ tương tự khác mà chúng tôi chạy: nhận và giải tuần tự hóa một yêu cầu, thực hiện một số việc gửi đến các dịch vụ / cơ sở dữ liệu ngược dòng, tính toán kết quả dựa trên các câu trả lời từ thượng nguồn, tuần tự hóa một câu trả lời, viết nguệch ngoạc tin nhắn. Thời lượng yêu cầu trung bình ~ 60ms, 90% 200ms, 99% 500ms +. Chúng tôi có một loạt các dịch vụ khác có cấu hình tương tự chạy trên các thùng chứa vm tương đương không thể hiện sự ngắt kết nối này giữa Tải và CPU%.
mặc dù

Mặc dù vậy, Linux chỉ đi theo lịch trình đến một cpu ảo, mà ESX sau đó lên lịch thông qua các thuật toán riêng của nó cho một cpu thực. Làm thế nào tương tự là vm so sánh? CPU rất giống nhau cho tải khác nhau? Sử dụng bộ nhớ giống nhau?
Matt

@mindthemonkey Có ít nhất vài chục dịch vụ khác nhau trong VM. Một số có cấu hình khác nhau đáng kể, nhưng phần lớn trông khá giống với dịch vụ này. 4GB mem, 2 cp cp, IO khiêm tốn (chủ yếu là mạng và ghi nhật ký cơ bản), chạy 30-60% cpu thông qua đường cong hàng ngày. Các nút chuyên sâu IO và / hoặc bộ nhớ (DB, SOLR) có được các máy chủ chuyên dụng. Hầu hết các dịch vụ khác của vm đều cho thấy mối tương quan dự kiến ​​giữa% cpu và tải (ít nhất là miễn là chúng tránh xa 100% một cách lành mạnh).
dbenhur

@mindthemonkey trong khi bộ lập lịch khách chỉ kiểm soát cpu và ESX đang lập lịch trong bối cảnh lớn hơn, tôi không thấy điều này ảnh hưởng đáng kể đến% cpu và kế toán tải. Cả hai đều dựa trên các mẫu được lấy ở một số tần số và trong phạm vi khách được đặt trước bởi lịch trình của trình ảo hóa, điều này sẽ ảnh hưởng đến cả các lát trong đó công việc thực sự được thực hiện và các lát mà khách lấy mẫu.
dbenhur

1

Nếu chúng ta sử dụng các lệnh shell sau để theo dõi mức trung bình tải thực, chúng ta có thể có các quan điểm khác nhau về hiện tượng này. procs_rucky có thể cao hơn nhiều so với chúng tôi dự kiến.

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

1

Khi bạn gặp vấn đề về hiệu năng trong VM trước tiên, bạn cần tiếp cận vấn đề từ cả phía giám sát và từ VM. Một lưu ý khác là thời gian trong máy ảo không chính xác. Điều này cũng có nghĩa là các số liệu thống kê được đo trong VM có thể không chính xác.

Số liệu thống kê CPU và I / O cho VM này là gì? Hãy chú ý đến bộ đếm sẵn sàng của CPU - nó phải dưới 5%. Phiên bản ESX nào bạn đang chạy? Kiến trúc phần cứng của bạn trong thử nghiệm và prod là gì?

Trên VM bạn có thể cấu hình tất cả mọi thứ từ ứng dụng hạt nhân với perf và hình dung ra với flamegraphs


Cảm ơn bạn đã dành thời gian để cố gắng giải quyết vấn đề năm năm trước - các hệ thống và phần mềm trong câu hỏi thuộc về một công ty tôi không còn làm việc nữa và ngăn xếp VM và dịch vụ được đề cập không còn hoạt động nữa. :) Có một loạt các thông tin CPU và IO đã được đăng trong câu hỏi ban đầu. Công trình công cộng và giải trình của Brendan về sự hoàn hảo và ngọn lửa đã hoãn câu hỏi này hơn một năm.
dbenhur

1
Không vấn đề gì. Có lẽ nó sẽ hữu ích cho ai đó.
Mircea Vutcovici

0

Điều đó không có vẻ như là một trung bình tải đặc biệt cao. Nếu bạn muốn theo dõi nó, iotopcó lẽ là công cụ tốt nhất cho công việc.


iotoplà nhàm chán, mọi thứ nói khoảng 0.
dbenhur

Bất kỳ tải avg nào trên số cpu có nghĩa là tôi có nhiều quá trình đang chờ để chạy hơn cpus để chạy chúng. Tôi thấy nhiều khoảng trên 2.0 và một số la-5s trên 4 và lên đến 6.5. Điều này có nghĩa là tôi thường có các quy trình bị đình trệ đối với cpu đằng sau các quy trình khác và ngụ ý độ trễ không mong muốn vì thiếu dung lượng cpu. Tôi thường mong đợi tải trung bình và% cpu tương quan cho đến khi hệ thống bắt đầu đạt đến mức bão hòa 100% cpu; sau đó tải trung bình là tín hiệu tốt hơn bởi vì nó cho biết hệ thống đã cam kết quá mức như thế nào, không chỉ là nó bận 100%.
dbenhur

0

Tôi đã xử lý một kịch bản rất giống với kịch bản của bạn. Trong trường hợp của tôi, trung bình tải giảm xuống sau khi thay đổi bộ lập lịch IO của thiết bị khối VM có vấn đề sang bộ lập lịch NOOP. Bộ lập lịch này chỉ là một hàng đợi FIFO, hoạt động tốt khi trình ảo hóa sẽ áp dụng các thuật toán lập lịch IO của riêng mình. Không cần phải sắp xếp lại hai lần.

Như đã nói, tôi vẫn đang xử lý các sự kiện bàn phím chậm chạp trên VM có vấn đề, vì vậy tôi nghĩ rằng tôi chỉ xóa mức trung bình tải cao mà không giải quyết được vấn đề thực tế. Tôi chắc chắn sẽ cập nhật câu trả lời này nếu tôi tìm thấy nguyên nhân gốc rễ.

Liệt kê các bộ lập lịch có sẵn (và [bộ lập lịch] đang sử dụng):

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

Thay đổi nó bằng:

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

Để làm cho nó bền bỉ, bạn cần thêm elevator=noopvào các tham số khởi động kernel của VM.


-2

Trung bình tải là số lượng quá trình có thể chạy đang chờ CPU. Một quá trình đang chờ I / O hoàn toàn không được tính. "Giải thích thông thường" chỉ là sai lầm.


3
Linux bao gồm các quá trình trong giấc ngủ không thể giải thích được trong tính toán tải của nó. Các quy trình như vậy hiển thị với Trạng thái 'D' trong các công cụ kiểm tra quy trình thông thường. Trạng thái này thường được sử dụng bởi trình điều khiển thiết bị đang chờ IO hoặc mạng IO. "Lời giải thích thông thường" đó đúng với Linux, nhưng không phải hầu hết các bản phối khác.
dbenhur

1
s / không thể giải thích / không bị gián đoạn /
dbenhur

1
Một bình luận trước đó đã tham khảo một số công việc hiệu suất từ ​​Brendan Gregg, điều đó nhắc nhở tôi rằng gần đây anh ấy cũng đã làm một số khảo cổ đáng yêu về cách thức giấc ngủ không bị gián đoạn trong Trung bình tải của Linux
kể
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.