monolithic kernel

巨大ファイルを作成する

February 16, 2013

    巨大なファイルを高速に作るメモ。

    実行結果はさくらのVPS 1GにUbuntu 12.10を入れた環境でのものです。

    中身をゼロで埋める場合

    埋めるというか空っぽのsparse fileですが。

    $ time dd if=/dev/zero of=temp.bin bs=1 count=0 seek=1G
    0+0 records in
    0+0 records out
    0 bytes (0 B) copied, 1.1289e-05 s, 0.0 kB/s
    dd if=/dev/zero of=temp.bin bs=1 count=0 seek=1G  0.00s user 0.00s system 0% cpu 0.002 total

    比較用

    真面目に書き込む場合の結果です。

    $ time dd if=/dev/zero of=temp.bin bs=1G count=1
    1+0 records in
    1+0 records out
    1073741824 bytes (1.1 GB) copied, 29.3218 s, 36.6 MB/s
    dd if=/dev/zero of=temp.bin bs=1G count=1  0.00s user 10.84s system 36% cpu 29.666 total

    中身をランダムにする場合

    擬似乱数でも気にしないのであれば、/dev/random/dev/urandom を流し込むより openssl rand コマンドを使うのがいいみたいです。

    $ time openssl rand 1073741824 > temp.bin
    openssl rand 1073741824 > temp.bin  35.07s user 1.35s system 99% cpu 36.524 otal

    比較用

    /dev/urandom を流し込んだ場合の結果です。

    $ time dd if=/dev/urandom of=temp.bin bs=1G count=1
    1+0 records in
    1+0 records out
    1073741824 bytes (1.1 GB) copied, 134.728 s, 8.0 MB/s
    dd if=/dev/urandom of=temp.bin bs=1G count=1  0.00s user 105.87s system 78% cpu 2:14.98 total

    参考