ざっくり /tmpfs
こんにちは、Qです。
本年もよろしくお願いします。
今回のネタは ざっくりtmpfs です。
tmpfs 。。。ファイルシステムの1つなわけですが、
コレをマウントすると搭載しているメモリの一角を仮想的に、
ハードディスクとして利用することができるようになります。
メモリ上に確保される領域なので、サーバを停止したり、
再起動したら初期化されます。
デフォルトでは搭載メモリの半分がtmpfsに割り当てられます。
搭載メモリが4GBなら2GBが、8GBなら4GBが、64GBなら32GBが
tmpfsに割り当てられます。
搭載メモリの半分と聞くと『ファッ!?』となりますが、
そこはちゃんと考えられていて、
利用する(した)分だけがtmpfsとして確保されます。
でないと、MySQLでは
『メモリの80%をInnodb_buffer_pool_sizeに割り当てろ』
とか言われたりしますが、
メモリの半分をtmpfsに持っていかれたら、泣くしかないです。
搭載メモリが4GBのときは2GBがtmpfsに割り当てられますが、
2Gが丸ごといきなりtmpfsになるわけではなく、
例えば、tmpfsをマウントしたディレクトリに500MBのファイルを置いたら、
その500MB分がtmpfsとして確保(使用)されるわけです。
最初に仮想的なハードディスクと言いましたが、
tmpfsに割り当てられるメモリサイズは
ディスククォータみたいなもの、と考えるといいと思います。
tmpfsのディスク使用量はdfコマンドで確認することができます。
[root@nabe-test1 ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on devtmpfs devtmpfs 491868 0 491868 0% /dev tmpfs tmpfs 507396 0 507396 0% /dev/shm tmpfs tmpfs 507396 26220 481176 6% /run tmpfs tmpfs 507396 0 507396 0% /sys/fs/cgroup /dev/vda3 ext4 16376680 8401032 7120712 55% / tmpfs tmpfs 101480 0 101480 0% /run/user/0
tmpfsがたくさん見えますが、
CentOS 6 から CentOS 7 に乗り換えた当初は、
ズラズラと並ぶtmpfsを眺めて『???』になったものです。
/run が 26220KB ほど使っていますが、
/run にはプログラムのPIDファイルやjournalログなどが置かれています。
tmpfsのメモリ使用量はfreeコマンドで確認することができます。
[root@nabe-test1 ~]# free -t total used free shared buff/cache available Mem: 1014796 301292 220340 26220 493164 542372 Swap: 4198396 0 4198396 Total: 5213192 301292 4418736
dfコマンド結果の『/run の used』と
freeコマンド結果 の『shared(共有メモリ)』が『26220KB』ですね。
tmpfsはメモリ上に作成されるディスク・ファイルシステムなので
dfコマンドでもfreeコマンドでも確認できるんですね。
ここで /run の used を100%にしてみます。
[root@nabe-test1 ~]# dd if=/dev/zero of=/run/dummy count=481176K dd: writing to '/run/dummy': No space left on device 962353+0 records in 962352+0 records out 492724224 bytes (493 MB) copied, 1.91489 s, 257 MB/s
[root@nabe-test1 ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on devtmpfs devtmpfs 491868 0 491868 0% /dev tmpfs tmpfs 507396 0 507396 0% /dev/shm tmpfs tmpfs 507396 507396 0 100% /run tmpfs tmpfs 507396 0 507396 0% /sys/fs/cgroup /dev/vda3 ext4 16376680 8401032 7120712 55% / tmpfs tmpfs 101480 0 101480 0% /run/user/0
[root@nabe-test1 ~]# free -t total used free shared buff/cache available Mem: 1014796 301348 69664 507396 643784 64052 Swap: 4198396 0 4198396 Total: 5213192 301348 4268060
空きメモリ available が減少して shared が増えたことがわかります。
/run に作成した dummy を削除してみます。
[root@nabe-test1 ~]# rm -f /run/dummy
[root@nabe-test1 ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on devtmpfs devtmpfs 491868 0 491868 0% /dev tmpfs tmpfs 507396 0 507396 0% /dev/shm tmpfs tmpfs 507396 26220 481176 6% /run tmpfs tmpfs 507396 0 507396 0% /sys/fs/cgroup /dev/vda3 ext4 16376680 8408804 7112940 55% / tmpfs tmpfs 101480 0 101480 0% /run/user/0
[root@nabe-test1 ~]# free -t total used free shared buff/cache available Mem: 1014796 300944 579792 26220 134060 559904 Swap: 4198396 0 4198396 Total: 5213192 300944 4778188
空きメモリ available が増えて shared が元に戻りましたね。
tmpfs が メモリ上のディスク・ファイルシステムだということを
お分かりいただけたと思います。
WordPress がキライなQでした。それでは。