CPU の一般的なパフォーマンス指標:
使用率、負荷平均、コンテキスト切り替え
1. CPUチューニングの実践
実践 1: ユーザーの CPU 使用率が高い、その理由を調べてコードのボトルネック ポイントを見つける
実践 1 環境構築:
$ cat /tftpboot/test.sh
!/bin/bash
stress --cpu 1 --timeout 12000
実践 2: ソフト割り込み si -- CPU 使用率が高い、コードのボトルネックを見つける
ネットワークの理由は別のツールで二重に検証できます。パケットの送受信頻度を確認してください。
nethogs
実践2の環境構築:
host A(本机):
iperf -s -p 10000
host B:
iperf -c 172.21.92.104 -p 10000 -t 10000
実践 3: CPU 使用率が高い原因を見つける --- IO プレッシャー レベル
環境構築:
vi test.c
include
include
include
include
include
int main()
{
printf("pid=%d\n", getpid());
char *p = "0123456789\n";
while(1) {
int fd, len;
fd = open("./test.txt", ORDWR|OCREAT|O_APPEND);
if(fd == -1) {
perror("open");
return -1;
}
write(fd, p, strlen(p));
fsync(fd);
close(fd);
}
return 0;
}
CPU チューニングの一般的な方法:
2. メモリチューニングの練習
パートナー アルゴリズム: 物理メモリの管理機能は、アプリケーションの状態ではなく CPU カーネルの状態で管理され、ブロックあたり 4096 (4kb) バイト、4 つのブロックに分割されます。
スラブ管理メモリ: 小規模メモリ管理
プロセスによって使用されるメモリは、PSS および RSS によって測定できます。
プロセスの Pss を計算します:
$ cat /proc/1/smaps | grep Pss | awk '{total+=$2}; END {print total}'