Linux下vmstat調優工具的深入分析
vmstat
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 310596 24796 143780 0 0 933 89 1044 119 3 21 72 4 0
1)procs:
r:代表正在執行的程式數.
b:代表處在不可遮蔽中斷的程式數.
2)memory:
swpd:已使用swap的空間大小.
free:空閒的記憶體.
buff:記憶體中buffer的大小.
cache:記憶體中cache的大小.
3)swap
si:從swap讀出的記憶體,也就是主缺頁,這個值是一個比率,即每秒讀了多少KB.
so:置換到swap的記憶體,這個值是一個比率,即每秒寫了多少KB.
4)io
bi:從磁碟讀資料,這個值是一個比率,即每秒讀了多少BLOCK.
bo:寫資料到磁碟,這個值是一個比率,即每秒寫了多少BLOCK.
5)system
in:每秒中斷的次數.
cs:每秒轉換上下文的次數.
6)
us:使用者態程式使用CPU的百分比.
sy:核心態程式使用CPU的百分比.
id:處於空閒的CPU百分比.
wa:系統等待IO的CPU時間百分比.
st:來自於一個虛擬機器偷取的CPU時間的百分比.
二)系統監控的實驗:
例項一,大量的算術運算
本程式會進入一個死迴圈,不斷的進行求平方根的操作,模擬大量的算術運算的環境.
測試源程式如下:
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include <stdlib.h>
void
run_status(void)
{
double pi = M_PI;
double pisqrt;
long i;
while(1){
pisqrt = sqrt(pi);
}
}
int
main (void)
{
run_status();
exit(EXIT_SUCCESS);
}
gcc run.c -o run -lm
./run&
執行:
vmstat 1
注:我們的程式不斷的進行算術運算,r的值由0變成了1,而cpu的使用者態利用率也達到了100%.如下:
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 304592 25244 147800 0 0 0 0 1010 31 0 1 99 0 0
0 0 0 304592 25244 147800 0 0 0 0 1020 37 0 0 100 0 0
1 0 0 304592 25244 147800 0 0 0 36 1016 46 69 1 30 0 0
1 0 0 304592 25244 147800 0 0 0 0 1067 56 100 0 0 0 0
1 0 0 304592 25244 147800 0 0 0 0 1010 31 100 0 0 0 0
例項二,大量的系統呼叫
本指令碼會進入一個死迴圈,不斷的執行cd命令,從而模擬大量系統呼叫的環境
測試指令碼如下:
#!/bin/bash
while (true)
do
cd ;
done
chmod +x loop.sh
./loop.sh
執行:
vmstat 1
注:程式不斷的呼叫cd命令,此時程式不斷的進行上下文切換,所以cs的值會驟然提高,而cpu的核心態利用率也會達到98%左右.如下:
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 304592 25248 147804 0 0 111 15 1025 179 20 20 59 0 0
0 0 0 304592 25248 147804 0 0 0 0 1013 36 0 0 100 0 0
1 0 0 304592 25248 147816 0 0 0 0 1015 422 1 72 27 0 0
2 0 0 304592 25248 147816 0 0 0 0 1012 544 3 97 0 0 0
1 0 0 304592 25248 147816 0 0 0 0 1007 522 3 97 0 0 0
1 0 0 304592 25248 147816 0 0 0 64 1015 523 3 97 0 0 0
2 0 0 304592 25248 147816 0 0 0 0 1003 572 2 98 0 0 0
1 0 0 304592 25248 147816 0 0 0 0 1012 1263 2 98 0 0 0
1 0 0 304592 25248 147816 0 0 0 0 1006 1264 3 97 0 0 0
1 0 0 304592 25248 147816 0 0 0 0 1015 1249 3 97 0 0 0
例項三,大量的io操作
我們用dd命令,從/dev/zero讀資料,寫入到/tmp/data檔案中,如下:
dd if=/dev/zero of=/tmp/data bs=1M count=1000
執行:
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
0 0 0 302160 25868 149004 0 0 77 116 1027 151 14 17 69 0 0
1 0 0 302160 25868 149004 0 0 0 0 1018 35 0 1 99 0 0
3 0 0 134884 26032 311628 0 0 0 109872 1423 102 0 100 0 0 0
1 0 0 14596 26148 428808 0 0 0 117208 1372 120 0 100 0 0 0
1 0 0 6224 22908 440592 0 0 4 64944 1305 322 0 98 0 2 0
1 0 0 5976 21836 441016 0 0 4 79072 1447 162 0 51 0 49 0
0 2 0 5716 21956 439672 0 0 4 79016 1431 374 0 81 0 19 0
2 2 0 6180 22044 438064 0 0 0 61432 1392 285 0 61 0 39 0
2 2 0 6912 22104 436828 0 0 4 73980 1486 253 1 59 0 40 0
0 4 0 5876 14132 448856 0 0 8 63784 1378 313 0 69 0 31 0
0 2 4 5980 4140 457860 0 0 0 46756 1399 274 0 65 0 35 0
1 3 4 6060 3892 457580 0 0 8 69876 1398 214 0 46 0 54 0
1 4 4 6120 2872 457348 0 0 0 59920 1364 327 0 71 0 29 0
注:dd不斷的向磁碟寫入資料,所以bo的值會驟然提高,而cpu的wait數值也變高,說明由於大量的IO操作,系統的瓶徑出現在低速的裝置上.
由於對檔案系統的寫入操作,cache也從149004KB提高到了457348KB,又由於大量的寫中斷呼叫,in的值也從1018提高到1364.
接下來我們還用dd命令,這回從/tmp/data檔案讀,寫到/dev/null檔案中,如下:
dd if=/tmp/test1 of=/dev/null bs=1M
執行:
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
0 0 60 7056 2492 464560 0 0 177 517 1028 116 10 12 78 1 0
0 0 60 7056 2492 464560 0 0 0 0 1006 32 0 0 100 0 0
0 1 60 5768 2296 465032 0 4 94340 4 1514 252 0 65 17 18 0
1 1 60 5876 2220 466032 0 0 150148 56 1770 306 0 93 0 7 0
0 1 60 5792 2180 467152 0 0 98872 0 1598 281 0 81 0 19 0
0 1 60 6308 988 469816 0 52 89556 52 1722 303 0 88 0 12 0
2 1 60 5620 1004 470488 0 0 79052 0 1671 690 0 72 0 28 0
0 1 60 6548 1028 469540 0 0 67392 4 1535 657 1 66 0 33 0
1 1 60 5648 1060 470588 0 0 47408 16 1400 482 0 44 0 56 0
0 1 60 6368 1088 469836 0 0 70212 0 1561 666 0 66 0 34 0
注:dd不斷的從/tmp/data磁碟檔案中讀取資料,所以bi的值會驟然變高,最後我們看到b(不可中斷程式數)也由0變成了1.
接下來我們繼續用dd命令,把資料寫到/dev/ram1裡,如下:
dd if=/dev/zero of=/dev/ram1 bs=1M count=16
16+0 records in
16+0 records out
16777216 bytes (17 MB) copied, 0.0635522 seconds, 264 MB/s
執行:
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
0 0 60 6156 6256 466280 0 0 366 480 1029 111 9 11 79 1 0
0 0 60 6156 6256 466280 0 0 0 0 1011 32 0 0 100 0 0
0 0 60 6156 6256 466292 0 0 12 0 1031 65 0 3 96 1 0
0 0 60 6156 6264 466284 0 0 0 48 1022 48 0 1 99 0 0
0 0 60 6148 17920 454652 0 0 0 4 1021 81 0 8 92 0 0
0 0 60 6148 17920 454652 0 0 0 0 1013 32 1 0 99 0 0
0 0 60 6148 17920 454652 0 0 0 0 1016 36 0 1 99 0 0
0 0 60 6148 17920 454652 0 0 0 0 1006 31 0 0 100 0 0
0 0 60 6148 17920 454652 0 0 0 0 1026 42 0 0 100 0 0
注:dd從/dev/zero讀取資料,寫入到/dev/ram1裡面,由於/dev/ram1是裝置節點,所以buff會增加.
例項四:大量的佔用記憶體
本程式會不斷分配記憶體,直到系統崩潰.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
void *ptr;
int n = 0;
while (1){
ptr = malloc(0x100000);
if (ptr == NULL)
break;
memset(ptr, 1, 0x100000);
printf("malloced %d MB\n", ++n);
}
pause();
}
gcc callmem.c -o callmem
./callmem
執行:
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
0 0 0 7512 18796 451064 0 0 346 442 1028 105 8 10 81 1 0
0 0 0 7512 18796 451064 0 0 0 0 1012 36 0 1 99 0 0
2 0 0 6096 18704 417676 0 0 0 0 1042 169 0 88 12 0 0
1 0 0 5896 18616 379356 0 0 0 0 1048 183 1 99 0 0 0
1 0 0 6324 18532 340796 0 0 0 36 1043 215 1 99 0 0 0
1 0 0 6376 18444 302372 0 0 0 0 1048 195 0 100 0 0 0
1 0 0 6036 18384 264904 0 0 0 0 1040 187 1 99 0 0 0
1 0 0 5784 18384 228560 0 0 0 0 1046 175 1 99 0 0 0
1 0 0 6532 18372 190316 0 0 0 0 1041 188 1 99 0 0 0
1 0 0 6084 18364 153804 0 0 0 0 1047 187 0 100 0 0 0
1 0 0 6256 18368 115992 0 0 0 12 1041 195 1 99 0 0 0
1 0 0 6580 17852 77868 0 0 0 0 1050 196 1 99 0 0 0
1 1 0 4892 17304 39556 0 0 0 0 1044 157 0 100 0 0 0
1 1 0 5252 17304 18676 0 0 0 0 1037 81 1 99 0 0 0
1 0 9236 6156 16456 7580 0 9172 0 9196 1092 131 1 74 0 25 0
1 0 56008 6860 16456 7620 0 46772 0 46772 1394 399 1 96 0 3 0
2 1 103600 6488 16464 7600 0 47652 0 47668 1416 395 2 96 0 2 0
1 1 162644 6580 16464 7536 0 59044 0 59044 1300 333 2 92 0 6 0
1 0 197980 6408 16464 5876 0 35340 0 35340 1330 259 3 89 0 8 0
2 4 230372 4920 16468 2876 0 32392 4 32392 1299 293 2 96 0 2 0
2 2 269352 5824 16472 1304 0 38980 252 38980 1306 285 2 90 0 8 0
2 2 305656 4936 16468 1392 88 36304 216 36304 1310 317 1 87 0 12 0
3 5 361100 5136 16472 1352 96 55444 96 55456 1301 297 2 91 0 7 0
5 3 404796 6820 16488 1760 96 43696 524 43696 1282 186 2 82 0 16 0
注:我們看到cache迅速減少,而swpd迅速增加,這是因為系統為了分配給新的程式,而從cache(檔案系統快取)回收空間,當空間依然不足時,會用到swap空間.
而於此同時,si/so也會增加,尤其是so,而swap屬於磁碟空間,所以bo也會增加.
最後:st這個值來自一個虛擬機器偷到的時間,在Linux 2.6.11核心之前,沒有這個值.
例項五:又一個大量分配記憶體例子
我們這個例子為了說明active/inactivte的作用,
源程式如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int
main (int argc, char *argv[])
{
if (argc != 2)
exit (0);
size_t mb = strtoul(argv[1],NULL,0);
size_t nbytes = mb * 0x100000;
char *ptr = (char *) malloc(nbytes);
if (ptr == NULL){
perror("malloc");
exit (EXIT_FAILURE);
}
size_t i;
const size_t stride = sysconf(_SC_PAGE_SIZE);
for (i = 0;i < nbytes; i+= stride) {
ptr[i] = 0;
}
printf("allocated %d mb\n", mb);
pause();
return 0;
}
gcc act.c -o act -lrt
./act 100
執行:
vmstat -a 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 363868 79488 47724 5 160 291 504 1032 95 6 9 83 1 0
0 0 0 363868 79488 47728 0 0 0 0 1010 32 0 0 100 0 0
0 0 0 363868 79488 47728 0 0 0 0 1014 34 0 0 100 0 0
1 0 0 333924 79492 77736 0 0 8 36 1014 44 0 75 24 1 0
1 0 0 293252 79500 118388 0 0 0 0 1011 34 0 100 0 0 0
0 0 0 261384 79500 150140 0 0 0 0 1009 36 0 78 22 0 0
0 0 0 261384 79500 150192 0 0 0 0 1015 33 0 1 99 0 0
0 0 0 261384 79500 150192 0 0 0 0 1008 30 0 0 100 0 0
0 0 0 261384 79500 150192 0 0 0 0 1015 32 0 0 100 0 0
0 0 0 363436 79500 47732 0 0 0 12 1018 45 0 2 98 0 0
0 0 0 363436 79508 47732 0 0 0 0 1011 55 0 1 99 0 0
0 0 0 363436 79508 47732 0 0 0 0 1008 29 0 0 100 0 0
注:程式執行時系統給它分配了100MB的記憶體,所以此時的active從47728kb變到了150192kb.
三)vmstat用法:
檢視系統已經fork了多少次
vmstat -f
processes 114688
注:這個資料是從/proc/stat中的processes欄位裡取得的.
檢視記憶體的active和inactive
vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 361952 80536 48396 5 140 255 441 1031 87 6 8 85 1 0
注:inact和active的資料來自於/proc/meminfo.
檢視記憶體使用的詳細資訊
vmstat -s
515600 total memory
154020 used memory
48396 active memory
80600 inactive memory
361580 free memory
46376 buffer memory
57352 swap cache
1052248 total swap
0 used swap
1052248 free swap
31352 non-nice user cpu ticks
167 nice user cpu ticks
43234 system cpu ticks
489636 idle cpu ticks
5509 IO-wait cpu ticks
1243 IRQ cpu ticks
1751 softirq cpu ticks
0 stolen cpu ticks
1451094 pages paged in
2514952 pages paged out
6822 pages swapped in
198826 pages swapped out
5905614 interrupts
498241 CPU context switches
1300715746 boot time
114723 forks
注:這些資訊的分別來自於/proc/meminfo,/proc/stat和/proc/vmstat.
檢視磁碟的讀/寫
vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
sda 26411 18657 2900913 144728 22982 605889 5030968 3128488 0 117
hdc 143 94 1276 357 0 0 0 0 0 0
fd0 0 0 0 0 0 0 0 0 0 0
md0 0 0 0 0 0 0 0 0 0 0
注:這些資訊主要來自於/proc/diskstats.
merged:表示一次來自於合併的寫/讀請求,一般系統會把多個連線/鄰近的讀/寫請求合併到一起來操作.
檢視/dev/sda1磁碟的讀/寫
vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
35215 2842778 430114 3440912
注:這些資訊主要來自於/proc/diskstats
reads:來自於這個分割槽的讀的次數.
read sectors:來自於這個分割槽的讀扇區的次數.
writes:來自於這個分割槽的寫的次數.
requested writes:來自於這個分割槽的寫請求次數.
檢視系統的slab資訊
vmstat -m
Cache Num Total Size Pages
rpc_buffers 8 8 2048 2
rpc_tasks 8 20 192 20
rpc_inode_cache 6 9 448 9
ip_fib_alias 14 113 32 113
ip_fib_hash 14 113 32 113
fib6_nodes 24 113 32 113
ip6_dst_cache 16 30 256 15
ndisc_cache 1 20 192 20
RAWv6 4 11 704 11
UDPv6 2 6 640 6
tw_sock_TCPv6 0 0 128 30
request_sock_TCPv6 0 0 128 30
TCPv6 3 3 1280 3
dm_tio 0 0 16 203
dm_io 0 0 20 169
jbd_4k 0 0 4096 1
scsi_cmd_cache 1 12 320 12
sgpool-128 32 32 2048 2
sgpool-64 32 32 1024 4
sgpool-32 32 32 512 8
sgpool-16 32 45 256 15
sgpool-8 34 60 128 30
scsi_io_context 0 0 104 37
ext3_inode_cache 21829 21832 492 8
ext3_xattr 36 78 48 78
journal_handle 2 169 20 169
journal_head 63 72 52 72
revoke_table 2 254 12 254
revoke_record 0 0 16 203
uhci_urb_priv 0 0 28 127
UNIX 56 63 448 9
flow_cache 0 0 128 30
cfq_ioc_pool 0 0 92 42
cfq_pool 0 0 96 40
crq_pool 0 0 44 84
deadline_drq 63 252 44 84
as_arq 0 0 56 67
mqueue_inode_cache 1 7 576 7
isofs_inode_cache 2 20 368 10
hugetlbfs_inode_cache 1 11 340 11
ext2_inode_cache 0 0 476 8
ext2_xattr 0 0 48 78
dnotify_cache 2 169 20 169
Cache Num Total Size Pages
dquot 0 0 128 30
eventpoll_pwq 1 101 36 101
eventpoll_epi 1 30 128 30
inotify_event_cache 0 0 28 127
inotify_watch_cache 1 92 40 92
kioctx 0 0 192 20
kiocb 0 0 128 30
fasync_cache 0 0 16 203
shmem_inode_cache 239 243 436 9
posix_timers_cache 0 0 88 44
uid_cache 5 59 64 59
ip_mrt_cache 0 0 128 30
tcp_bind_bucket 7 203 16 203
inet_peer_cache 0 0 64 59
secpath_cache 0 0 32 113
xfrm_dst_cache 0 0 320 12
ip_dst_cache 5 15 256 15
arp_cache 2 20 192 20
RAW 2 7 512 7
UDP 8 14 512 7
tw_sock_TCP 0 0 128 30
request_sock_TCP 0 0 128 30
TCP 6 7 1152 7
blkdev_ioc 6 127 28 127
blkdev_queue 20 20 956 4
blkdev_requests 100 184 172 23
biovec-256 7 8 3072 2
biovec-128 7 10 1536 5
biovec-64 7 10 768 5
biovec-16 7 20 192 20
biovec-4 7 59 64 59
biovec-1 71 406 16 203
bio 342 390 128 30
utrace_engine_cache 0 0 32 113
utrace_cache 0 0 32 113
sock_inode_cache 104 110 384 10
skbuff_fclone_cache 10 10 384 10
skbuff_head_cache 120 120 192 20
file_lock_cache 3 40 96 40
Acpi-Operand 448 552 40 92
Acpi-ParseExt 0 0 44 84
Acpi-Parse 0 0 28 127
Acpi-State 0 0 44 84
Cache Num Total Size Pages
Acpi-Namespace 337 338 20 169
delayacct_cache 78 78 48 78
taskstats_cache 19 53 72 53
proc_inode_cache 19 99 356 11
sigqueue 17 27 144 27
radix_tree_node 2319 2422 276 14
bdev_cache 23 28 512 7
sysfs_dir_cache 2928 2940 44 84
mnt_cache 28 30 128 30
inode_cache 692 792 340 11
dentry_cache 24563 24563 136 29
filp 830 980 192 20
names_cache 3 3 4096 1
avc_node 14 72 52 72
selinux_inode_security 636 780 48 78
key_jar 11 30 128 30
idr_layer_cache 100 116 136 29
buffer_head 8996 9000 52 72
mm_struct 61 63 448 9
vm_area_struct 1788 1932 84 46
fs_cache 59 59 64 59
files_cache 60 60 384 10
signal_cache 81 81 448 9
sighand_cache 72 72 1344 3
task_struct 78 78 1360 3
anon_vma 794 1016 12 254
pgd 47 47 4096 1
pid 92 101 36 101
size-131072(DMA) 0 0 131072 1
size-131072 0 0 131072 1
size-65536(DMA) 0 0 65536 1
size-65536 1 1 65536 1
size-32768(DMA) 0 0 32768 1
size-32768 1 1 32768 1
size-16384(DMA) 0 0 16384 1
size-16384 1 1 16384 1
size-8192(DMA) 0 0 8192 1
size-8192 0 0 8192 1
size-4096(DMA) 0 0 4096 1
size-4096 92 92 4096 1
size-2048(DMA) 0 0 2048 2
size-2048 234 234 2048 2
size-1024(DMA) 0 0 1024 4
Cache Num Total Size Pages
size-1024 176 176 1024 4
size-512(DMA) 0 0 512 8
size-512 264 264 512 8
size-256(DMA) 0 0 256 15
size-256 300 300 256 15
size-128(DMA) 0 0 128 30
size-128 1200 1200 128 30
size-64(DMA) 0 0 64 59
size-32(DMA) 0 0 32 113
size-64 1013 1180 64 59
size-32 1856 1921 32 113
kmem_cache 140 150 256 15
注:這組資訊來自於/proc/slabinfo
slab:由於核心會有許多小物件,這些物件構造銷燬十分頻繁,比如i-node,dentry,這些物件如果每次構建的時候就向記憶體要一個頁(4kb),而其實只有幾個位元組,這樣就會非常浪費,為了解決這個問題,就引入了一種新的機制來處理在同一個頁框中如何分配小儲存區,而slab可以對小物件進行分配,這樣就不用為每一個物件分配頁框,從而節省了空間,核心對一些小物件建立析構很頻繁,slab對這些小物件進行緩衝,可以重複利用,減少記憶體分配次數.
轉載地址:http://blog.csdn.net/macky0668/article/details/6839498
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27767315/viewspace-2107106/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux系統效能調優第一步——效能分析(vmstat) (轉載)Linux
- golang 效能調優分析工具 pprof(下)Golang
- linux高階工具命令 -- vmstat介紹Linux
- linux常用系統監控工具之vmstatLinux
- linux vmstat命令Linux
- Linux工具效能調優系列二:buffer和cacheLinux
- JVM調優工具Arthas的使用JVM
- MongoDB的效能調優工具 -- DexMongoDB
- linux中vmstat分析Linux
- Linux vmstat 命令 - 報告虛擬記憶體統計的工具Linux記憶體
- 【AIX 學習】效能優化--vmstatAI優化
- 【LINUX】linux ulimit調優LinuxMIT
- 每日Linux命令(2):vmstatLinux
- linux 監測命令(vmstat)Linux
- vmstat linux命令詳解Linux
- Linux vmstat命令基本使用Linux
- JVM 調優命令&工具使用JVM
- HarmonyOS:DevEco Profiler調優工具dev
- linux 效能調優工具perf + 火焰圖 常用命令Linux
- Unix環境下的Oracle調優Oracle
- Linux系統調優Linux
- linux調優效能命令Linux
- Linux 命令使用筆記【vmstat】Linux筆記
- linux vmstat輸出方法解析Linux
- JVM常用調優工具介紹JVM
- visualvm 效能調優工具LVM
- PHP開發調優clockwork工具PHP
- 轉:Exp/Imp工具效能調優
- linux調優的一點總結Linux
- vmstat的使用
- Linux核心引數調優Linux
- linux 效能調優引數Linux
- golang 效能調優分析工具 pprof (上)Golang
- jvm系列(七):jvm調優-工具篇JVM
- Android效能調優工具之 TraceViewAndroidView
- C#多執行緒下的調優C#執行緒
- Unix環境下的Oracle調優原則Oracle
- Linux下的除錯工具Linux除錯