web-dev-qa-db-ja.com

MongoDBサーバーでNUMAが有効になっているかどうかを確認するにはどうすればよいですか?

私たちのmongodbプロセスは一貫してCPUの100%以上を使用しており(これはLinode上のUbuntu 64ビットサーバー上にあります)、パフォーマンスの向上を目指しています。

私たちが見つけた1つの提案は、MongoDBとNUMAが一緒にうまく機能しないということでした: http://docs.mongodb.org/manual/administration/production-notes/#production-numa

/proc/sys/vm/zone_reclaim_modeがすでに0に設定されており、numactlが現在インストールされていないことに気付きました。

私の質問:サーバーですでにNUMAが有効になっているかどうか、および上記のリンクのアドバイスに従って次のコマンドでMongoを起動する必要があるかどうかを確認するにはどうすればよいですか?

numactl --interleave=all /usr/bin/local/mongod

/proc/cpuinfoの内容は次のとおりです(「プロセッサ」行を除いて出力が同じであるため、最初の3つのセクションは抑制されています)。

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) CPU E5-2650L 0 @ 1.80GHz
stepping        : 7
microcode       : 0x70a
cpu MHz         : 1800.077
cache size      : 20480 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm ida arat epb pln pts dtherm
bogomips        : 3600.15
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:
3
dreeves
dmesg | grep -i numa

これにより、サーバーでnumaが有効になっているかどうかがわかります。

numactl -sは、プロセスごとにnumaが有効になっているかどうかを示します。

本番ノードでnumaを使用すべきでない場合は、おそらく使用すべきではありません。 numactlを介してオフにするのではなく、BIOSを介してnumaを完全にオフにすることができます。

いくつかのパフォーマンステストを行っていたときに、numaが他のJavaアプリケーションでサーバーのパフォーマンスを完全に台無しにするのを見たことがあります。それを見ると、MongoのようなC/C++アプリが台無しになります!

あなたの元の問題はあなたの質問とは異なることを開示したいと思います。数値設定を変更しても、100%CPUの問題が解決しない場合があります。 numaカードを削除した後でも、100%のCPU使用率が残っていることに気付くかもしれません。これには、問題の根本に到達するためにより多くの診断が必要になります(おそらく別のスレッド)。

6
Zippy Zeppoli