カーネルのページサイズを4KBから4MBに変更したいと思います。これは、コンピュータにRAM)を大幅に追加したため、もうメモリ不足になることがないためです。
大量のメモリを必要とするプログラムは、ページの割り当てに費やす時間が短縮されるという考え方です。性能が上がると思いますので、試してみたいと思います。
実行中にどこにも見つからないmake menuconfig
。それを行う方法はありますか?
あなたはおそらくTransparent Hugepages
。 .configアイテムはCONFIG_TRANSPARENT_HUGEPAGEです。これを有効にしても、大きなページが自動的に表示されるわけではないことに注意してください。これをデフォルトにするには、CONFIG_TRANSPARENT_HUGEPAGE_MADVISEを「n」に設定する必要があります。
また、これでは任意のページサイズを選択できないことに注意してください。アーキテクチャの巨大なページサイズを使用できます。 x86_64の場合、これは1Mbです。表全体については https://en.wikipedia.org/wiki/Page_(computer_memory)#Huge_pages を参照してください。
PAGESIZEはカーネルのコンパイル時に設定されます。その選択はi386ハードウェアでのみ有効です。 64ビットシステムまたはその他のアーキテクチャを実行している場合、ページサイズは4Kであり、変更できません。
スラブはまさにあなたが探している正確な解決策のようです。スラブはカーネルによって事前に割り当てられたメモリユニットであり、多かれ少なかれ割り当てのオーバーヘッドを回避する必要があります。
詳細については、 Wikipedia:Slab allocation を参照してください
ページサイズを(可能な場合)1MiBの量に変更すると、過度のメモリの浪費が発生します。多くの(つまり数十の)サブプロセスとデーモンは、わずか数kBのメモリを使用します。何か安いメモリはありますか?