動的です。おわり
ああ、石投げないで。

はてなの伊藤直也さんのblogでそういうエントリを見つけたので。

記事のネタが欲しかったんだよう。

で、伊藤さんが書いているremountしたらスワップ発生ってのを考えていたんだが、まったく思いつかんのよ。原因が。
カーネルソースもみなおしたけどremountってfs管理構造体のmax_sizeメンバとかに再代入してるだけで、ぜんぜんメモリ確保してないし。

さらに言えば、tmpfsはファイルシステム上に100Mのファイルがあるときに50Mのサイズでリマウントしようとした場合、シュリンクの努力はなにもせずにエラーリターンするという特徴があるため、
サイズを減らす方向のremountが成功したのなら、サイズを増やしたぶんのファイルシステムスペースは使っていなかった可能性が高いのである。

うーむむ、現時点ではたまたま別の要因がうごいたんじゃない説がイチオシですなぁ。。。

あと、404 Blog Not Foundさんはわりと惜しい所をついているのだがtmpfsはmallocが使うのと同じしくみをつくうので、mallocと同じ挙動になる。が正しい。
ちょっとややこしいがFreeBSDにはカーネル内のメモリ確保関数はmallocと呼ばれているがLinuxでは別の名前がついているんだよん。ぐらいの理解で99%あってる。


今回唯一収穫だったのは、伊藤さんのblogを見るに、ramfsを世間ではinit以外でも結構使ってるのね。ってのが分かったこと。
それが一番の収穫だったかな。

ramfsはソースコード先頭(linux/fs/ramfs/inode.c)に

NOTE! This filesystem is probably most useful not as a real filesystem, but as an example of how virtual filesystems can be written.

 

なんていうちょっと怖いコメントがあるのでびびって使ってなかったのね。
あくまで、一番単純なファイルシステムの書き方の例ですからー。とか言われちゃうとねぇ。


あと、伊藤さんblogでは未使用メモリをOSが使うかどうかドキュメントに書いてないと愚痴っているのですが、OSが使わなければOSおよびユーザーからみてメモリ使用量は動的じゃないわけで、書いてあるも同然だと思いますよ。

なんか、99%私信っぽいエントリになってしまったがもともと伊藤さんのblogにコメントつけようとして、はてなサーバーがちょうどいいタイミングで落ちてデータが消えたのでむしゃくしゃして自分のblogに書いてしまっただけなので当然か。
今は反省している。