私は最近便利な「共有メモリ」ファイルシステムについて学びました/dev/shm
。時々、ディレクトリから書き込んで読み取るディスクバインディングプログラムを高速化するためにこれを使用できるかどうかを確認したかったので、EC2インスタンス(Ubuntu 16.04を実行しているc4.8xlarge)でいくつかの実験を実行しました。
$ time yes asdfjkl | head -1000000000 > /mnt/fake.txt
real 0m21.381s
$ time yes asdfjkl | head -1000000000 > /dev/shm/fake.txt
real 0m20.266s
$ time yes asdfjkl | head -1000000000 > /dev/null
real 0m14.334s
EC2インスタンスの書き込みスループットはEBSドライブと似ていますが/dev/shm/
、これは驚くべきことです。htop
マシンが書き込みにスワップスペースを使用しないことを示します/dev/shm
。 3番目のケースの書き込み速度はかなり速く、これは/dev/null
最初の2つのケースで他の要因(実装されたCPUなど)によって制限されない可能性があることを示しています。yes
/dev/shm
私は基本的に7.5GBのメモリが十分なパソコンで同じ実験を行いました。asdfjkl\n
また、Ubuntu 16.04を実行しながら重要だと思う人がいる場合は、より多くのハードウェアの詳細を掘り下げることができます。
$ time yes asdfjkl | head -1000000000 > /mnt/fake.txt
real 0m36.520s
$ time yes asdfjkl | head -1000000000 > /dev/shm/fake.txt
real 0m12.516s
$ time yes asdfjkl | head -1000000000 > /dev/null
real 0m11.252s
これは私が期待していたものにはるかに近いです。両方のシステムと両方のファイルシステムの読み取りスループット(書き込み)は、/dev/null
その場合の書き込みスループットにほぼ比例します。
解釈する方法がわからない2つの異なる観察:
- EC2インスタンスでは、
htop
メモリ使用量はwrite以降のサイズに似ているとマークされていますが、/dev/shm/fake.txt
私のデスクトップではそうではありません。 - EC2 インスタンスでは、同時ディスク書き込みの輻輳により、共有メモリへの書き込み速度がディスクへの書き込み速度と同じくらい遅くなるように見えますが、私のデスクトップではそうではありません。
答え1
推測する必要がある場合は、基本ボリュームが実際にEBSベースのボリュームであると言いたいと思います。作成するEBSサポートまたはインスタンスストアサポートルートボリュームの種類は、AMIによって異なります。
その後、/dev/shm が指す内容に依存します。最近、EC2インスタンスには通常2つのディスクがあることがわかりました。次のコマンドを実行すると、どちらがどちらであるかを確認できます。sudo nvme list
また見なさい:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.htmlそしてhttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html