困惑している問題があります。sgを使用してカスタマイズされたCDBを実行するライブラリがあります。sgのメモリ割り当てに日常的に問題があるシステムがいくつかあります。通常、sgドライバーには約4mbのハード制限がありますが、これらの少数のシステムでは〜2.3mbのリクエストでそれが見られます。つまり、CDBは2.3MBの転送を割り当てる準備をしています。ここに問題はないはずです:2.3 <4.0。
今、マシンのプロファイル。64ビットCPUですが、CentOS 6.0 32ビットを実行します(ビルドもしなかったし、この決定とは関係ありません)。このCentOSディストリビューションのカーネルバージョンは2.6.32です。16GBのRAMがあります。
システムでのメモリ使用量は次のようになります(ただし、このエラーは自動テスト中に発生するため、このerrnoがsgから返されるときの状態を反映しているかどうかはまだ確認していません)。
top - 00:54:46 up 5 days, 22:05, 1 user, load average: 0.00, 0.01, 0.21
Tasks: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 15888480k total, 9460408k used, 6428072k free, 258280k buffers
Swap: 4194296k total, 0k used, 4194296k free, 8497424k cached
私が見つかりました。この記事からのLinuxジャーナルカーネルのメモリ割り当てについてです。この記事は日付が付けられていますが、2.6に関係しているようです(筆者に関する筆者のコメント)。この記事では、カーネルは約1GBのメモリに制限されていると述べています(ただし、その1GBが物理、仮想、または合計の場合、テキストからは完全には明らかではありません)。これが2.6.32の正確なステートメントかどうか疑問に思っています。最終的には、これらのシステムがこの制限に達しているのではないかと思っています。
これは実際には私の問題に対する答えではありませんが、2.6.32の主張の真実性について疑問に思っています。それでは、カーネルの実際のメモリ制限は何ですか?これは、トラブルシューティングの考慮事項である必要があります。他の提案は大歓迎です。これを困惑させているのは、これらのシステムが、同じ問題を示さない他の多くのシステムと同一であることです。