CPUアーキテクチャSMP / NUMA、チューニング
SMPは:「対称型マルチプロセッシング」(対称型マルチプロセッシング)技術の略です。
これは、プロセッサのグループ(マルチCPU)を結集し、CPU間の共有メモリバスコンピュータを指します。
弱点:CPUの後に増加するが、専用メモリとメモリコントローラ、CPUは、メモリコントローラを介してメモリにアクセスして、複数のCPU・メモリ・コントローラは、競争がNUMAアーキテクチャが登場避けるために、競争を生成します。
NUMA:不均等メモリアクセス
各CPUが独自の専用メモリ(学名ノード)を持っているが、他のプロのCPUのメモリにアクセスすることができ、パフォーマンスが低下します。
LinuxのNUMA関連のコマンドの下で
numastat:ノードの状態を表示します。
私たちは何度もヒットし、そうでない場合よりを行う方法のヒット数ではありませんでした何回、自分のメモリ、CPUヒット(ノード)の下でプロセスを見ることができますか?これは、独自のCPUをバインドするプロセスを強制します。
古典的なシナリオ:沼の下で、特定のCPUアーキテクチャに結合するnginxのワーカープロセス、パフォーマンスが大幅に改善されます。
numactl:あなたは、プロセスが特定のCPUにバインドされて実現することができます
マシンを再起動したときただし、結合は無効になります。それを解決する方法、numad使用
numad:デーモン
numademo
非NUMAアーキテクチャは、プロセスは、特定のCPUにバインドされているか、タスクセットを使用します
$ taskset -p -c 0,1,2-4,5,9 1234
上記コマンドの意味:プロセス1234の処理として、IPは、0番、1番、2番、3番、4番、5番、9番CPUと結合します。
これは一例であり、一般的にPIDが変更されているので、あなたも、再バインドする必要があり、CPUにバインドされたが、システムが再起動したときにされています。
以前に設定nginxの設定ファイルに書き込まれ、どのCPUに作業員をバインドするように構成することができnginxのより強力な、。
上記の方法を使用して、プロセスは、特別に、いくつかのCPUの実行を行うことができますが、このプロセスの実装に加えて、これらのCPUが、また、カーネルの実装で、これらはCPUコアを実行しない防ぐために回避する方法、唯一そのプロセスを見て?
ソリューション:、6つのCPU、システムの起動があると仮定し、単に2つのCPUコアは、残りの4つのコアの命令を実行しないように命令を実行してみましょう。
静かなスプラッシュisolcpus = 2,3続い編集は、/ etc / default / grubのファイル、。戻る更新-GRUBを実行するための端子に接続されています。それは自動的に編集したプロファイル(ある/ etc / default / grubの)に従ってブートプログラムの準備プロファイルとして生成されます(/boot/grub/grub.cfg)
参考:結合テストと仮想CPUのプロセスのプロセッサアフィニティのubuntu
でも、脇CPUは、CPUコアに予約命令は、ああ、どのように彼らはそれを処理するためにCPUを中断させないように取り扱っておりませんが、また、割り込みを処理するために?
/ procの/ IRQ /変更
$ echo cpu_mask > /proc/irq/<irq_num>/smp_affinity
cpu_mask:ビットで表現。
0001:代表1号CPU
0011:代表1号和2号CPU
0101:代表1号和3号CPU
非NUMAアーキテクチャ、特定のCPUにバインドされるべきプロセスを決定するためにどのように?それを頻繁に切り替えているどのスレッドかを決定するには?次のコマンド
sar -q
使用sar之前要配置一下
1,修改:/etc/default/sysstat, 将 ENABLED=“false“ 改为ENABLED=“true“
2,执行:sudo /etc/init.d/sysstat restart
top
w
uptime
wmstat 1 5
下面的是查看CPU的使用率
mpstat 1 2
sar -P 1 2
iostat -c 1
cat /proc/stat
-c 1、視野のCPU使用率の意味iostatのスクリーンショットコマンド
- %ユーザ:ユーザプロセスのCPU使用率
- %システム:カーネルのCPU使用率
- %iowaitの:CPU使用率のIO処理
- 仮想マシンのCPU使用率:%を盗みます
- %アイドル:CPUのアイドル
ys:~$ iostat -c 1
Linux 4.15.0-20-generic (ys-VirtualBox) 2019年09月27日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.26 0.03 0.08 0.05 0.00 99.57
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
[コマンド]を押して、視覚的に以下の情報を得ることができ、より強力なDSTAT:
--top-bio
show most expensive block I/O process
显示最消耗blockI/O的进程
--top-bio-adv
show most expensive block I/O process (incl. pid and other stats)
显示最消耗blockI/O的进程
--top-childwait
show process waiting for child the most
显示等待子进程时间最长的父进程
--top-cpu
show most expensive CPU process
显示最消耗CPU的进程
--top-cpu-adv
show most expensive CPU process (incl. pid and other stats)
显示最消耗CPU的进程
--top-cputime
show process using the most CPU time (in ms)
显示最消耗CPU时间片的进程
--top-cputime-avg
show process with the highest average timeslice (in ms)
显示最消耗CPU时间片的进程
--top-int
show most frequent interrupt
显示最经常发生的中断信号
--top-io
show most expensive I/O process
显示最消耗I/O的进程
--top-io-adv
show most expensive I/O process (incl. pid and other stats)
显示最消耗I/O的进程
--top-latency
show process with highest total latency (in ms)
显示等待时间最长的进程
--top-latency-avg
show process with the highest average latency (in ms)
显示等待时间最长的进程
--top-mem
show process using the most memory
显示使用内存最多的进程
コマンドSAR -w 1(秒)]より強力に指定された秒数の平均値でスイッチング時間の直感的なプロセス