1

Linuxスラブの割り当てを勉強しています。

Linuxカーネルのソースコードmm/slab.cに従って、カーネルでkmallocを使用してメモリを要求すると、実際に何が起こるかのように見えます.スラブアロケータは、2の累乗の数で最も近いより大きな一致を見つけ、準備されたキャッシュを返します(存在する場合)が、/proc/slabinfo私に教えてくれます準備された kmalloc キャッシュの最大サイズは「8192」です。

kmalloc-8192          29     32   8192    4    8 : tunables  ...
kmalloc-4096          70     72   4096    8    8 : tunables  ...
kmalloc-2048         331    336   2048    8    4 : tunables  ...

カーネル ソース コードは、このサイズを超えるリクエストは失敗することを示しています (これは間違っていると思います) が、実際には、最大 128KB の kmalloc を実行できます。

私の質問: に kmalloc-16384、kmalloc-32768 などがないのはなぜ/proc/slabinfoですか?

4

1 に答える 1

1

その場合、ページアロケーターに直接行くと思います。ただし、order-2 の割り当て自体を処理する理由はわかりません。それが、奇妙な8kページアーキテクチャを使用している場合を除きます。これにより、順序が1になります。

于 2012-08-23T15:29:06.420 に答える