cgroup v1 の kmem.limit_in_bytes は deprecated and will be removed

5.4-rc7 で cgroup v1 の memory.kmem.limit_in_bytes を触っていたら下記のメッセージに遭遇した

[ 5627.054183] kmem.limit_in_bytes is deprecated and will be removed. Please report your usecase to if you depend on this functionality.

kmem.limit_in_bytes is deprecated and will be removed. !

ソース / コミット

下記のコミットで deprecated になってたのでした

Cgroup v1 memcg controller has exposed a dedicated kmem limit to users which turned out to be really a bad idea because there are paths which cannot shrink the kernel memory usage enough to get below the limit (e.g. because the accounted memory is not reclaimable).

... 略

5.4-rc1 の頃

kmem.limit_in_bytes で制限をかけた際に、カーネルのメモリを shrink できないパスがあるからとか意図しないエラーを招くからてな理由らしい. 詳細はコミットログを読んでくださいな

つい最近に「 kmem.limit_in_bytes を制限して slab_out_of_memory を起こすのを観察する」というエントリを書いたのだが これも同様のケースかと思う

slab_out_of_memory を起こすと制限をかけた cgroup 内のプロセスが自力でリカバリできない状態にハマるので使いにくいなと思っていたが、 deprecated になるものをあえて使う理由も無かろう