質問: スワップパーティションをテストする方法 ヘッドレスサーバーでランダムなセグメンテーションフォールトを診断しようとしていますが、奇妙に思われるのは、それらはメモリの負荷がかかっている場合にのみ発生し、スワップサイズが0を超えないことです。マシンを強制的に交換して、正常に機能していることを確認するにはどうすればよいですか?orca ~ # free total used free shared buffers cached mem: 1551140 1472392 78748 0 333920 1046368 -/+ buffers/cache: 92104 1459036 swap: 1060280 0 1060280 orca ~ # swapon -s filename type size used priority /dev/sdb2 partition 1060280 0 -1
回答: これはlinuxですか?もしそうなら、あなたは以下を試すことができます:# sysctl vm.swappiness=100 そして、多くのramを使用するプログラムを使用するか、ramを使い尽くす小さなアプリケーションを記述します。以下はそれを行います(ソース: 実験と楽しいlinuxディスクキャッシュ ):#include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main(int argc, char** argv) { int max = -1; int mb = 0; char* buffer; if(argc > 1) max = atoi(argv[1]); while((buffer=malloc(1024*1024)) != null && mb != max) { memset(buffer, 1, 1024*1024); mb++; printf("allocated %d mb\n", mb); sleep(1); } return 0; } linuxの仮想メモリマネージャは、実際にはram=を割り当てないように賢くなっている場合があるため、memset行を0ではなく1で初期化するようにコード化しました。私は、sleep(1)を追加してプロセスがramとswapを食い尽くすのを監視する時間を確保してください。ramとswapがプログラムから外れると、oomキラーはこれを強制終了します。gcc filename.c -o memeater ここで、filename.cは、上記のプログラムを保存したファイルです。次に、。/ memeaterで実行できます。私はこれをプロダクションマシンでは実行しません。