メモリからS3にアップロードしてベンチマークします。

メモリからS3にアップロードしてベンチマークします。

私はS3の読み書きで非常に基本的な時間コマンドを実行しています。問題は、システムIOの影響を受けずにメモリでテストしたいということです。友達が/dev/nullをパイプとして使うことを提案しましたが、私のフォルダには1000個のファイルがあり、サイズは約1GBです。

私のbashコマンドは次のようになります。

time aws s3 cp folder s3://mybucket/folder

メモリ書き込み時間だけを測定することを提案するものはありますか?

非常にありがとう

答え1

ディレクトリをramdiskにコピーし、そこからアップロード(およびテスト)します。

どの仮想ディスク?いくつかのオプションがあります:

  1. おそらく、オペレーティングシステムにすでに1つがあり、そのサイズが十分に大きい可能性があります。 filesystem タイプの出力を確認しますdf(より便利にサポートされている場合)。おそらく。グローバルに書き込み可能にしたいので、仮想ディスクで、小さすぎない場合に使用できます。df -htmpfs/dev/shm/dev/shm

  2. ユーザー専用の独立したRAMディスクがある場合があります。バラよりこのフォルダは何ですか/run/user/1000私のDebianやKubuntuでは、df -h "$XDG_RUNTIME_DIR"それがtmpfsであることを確認し、サイズとマウントポイントを知ることができます。

  3. この回答オンデマンドtmpfs(サイズ16GiB、ニーズとリソースに合わせて調整)を生成する方法の例を示します。

    mount -o size=16G -t tmpfs none /mnt/tmpfs
    

    これを行うには、root アクセス権が必要です。

これらの質問があります:tmpfsのサイズはどのように決まりますか?いっぱいになるとどうなりますか?面白いかもしれません。


代わりに、次のものを使用できます。vmtouchディレクトリ内のすべてのファイルを読み取り、仮想メモリにマップします。私があなたなら、RAMディスクを好むでしょう。それでも何らかの理由でRAMディスクを使用できない場合は、vmtouch何ができるかを確認することをお勧めします。

一般ユーザーは以下を使用できますvmtouch -t

-t
仮想メモリページをタッチします。ファイルの各ページから1バイトを読みます。ページがメモリにない場合、ページの不在が作成され、ページがディスクからファイルシステムのメモリキャッシュに読み込まれます。

-tおそらく十分ではないでしょう:

注:各ページはメモリに配置されますが、vmtouchコマンドが完了するとページがメモリから削除されることがあります。

ルートとして以下を使用できますvmtouch -l

-l
ページを物理メモリにロックします。このオプションは、すべてのメモリマップを-t呼び出しmlock(2)、完了時にディスクリプタを閉じないことを除いて、これと同じように機能します。クロールが完了すると、成功すると vmtouch は無期限にブロックされます。ファイルはvmtouchプロセスが終了するまで物理メモリにロックされます。

関連情報