私は非常にユニークな問題を抱えています。Octeonベースのハードウェアである特別なハードウェアでLinuxを実行しています。特定の操作を実行すると、プロセスがメモリを割り当て続けることがわかります。コードのどの部分がこの呼び出しを行っているかを追跡したいと思います。
これが私の環境の詳細です
- OcteonMIPSアーキテクチャ32ビット。
- Linuxカーネル2.6
- 最小限のLinux実装。
ただし、これが回避する必要のある私のオプション/制限です。
- 独自のmallocを作成することが役立つかどうかはわかりません。これが可能であれば、誰かが説明してもらえますか?
- このアーキテクチャでは使用できない、walgrindなどのツールは使用できません。
- コードベースは巨大であり、完全に理解していないため、レビューは実行可能で迅速ではありません。
- straceは割り当てられたメモリアドレスを教えてくれますが、これを作成したコードからどのように理解できますか?
これについて行く方法があるかどうか提案してください。
どうもありがとう。
私が言及するのを忘れたもう一つのことは、プロセスの仮想メモリが最大1.4GBまで増加し続け、そこで停止し、コード内の割り当てがENOMEMで失敗することを確認します。この1.4GBの制限は、32ビットマシンと関係がありますか?AFAIU 32ビットマシンは、プロセスごとに3 GBの仮想メモリを許可する必要がありますか?また、プロセスごとの制限はありません。これをsetrlimit/getrlimitで確認しました。
乾杯、パヴァン