x bytes(1GB)のダミーファイルを作成し、y並列数分(20個)のコピーを作成。xargsで並列圧縮。時間はtimeで測定。圧縮速度zは圧縮対象の総ファイルサイズ/消費時間(user+sys)。x,y,zの比較を行う。
$ dd if=/dev/urandom of=dummy.dat count=1024 bs=1M $ for i in `seq 0 19`; do file=`printf dummy_%03d.dat ${i}`; cp -a dummy.dat ${file}; done $ find ~/ -name '*_*.dat' -print0 | sort -z | time -p xargs -0 -r -n 1 -P 0 xz -v -e -z -9 $ find ~/ -name '*_*.dat' -print0 | sort -z | xargs -0 -r -n 1 -P 1 xz -v -e -z -9 $ find ~/ -name '*_*.dat.xz' -print0 | sort -z | xargs -0 -r -n 1 -P 1 xz -v -d
yを変えてスワップの様子を観察。並列数の勝手な基準として、実行中プロセスがスワップアウトされない程度の並列数を採用することにする。xz -9e は圧縮用メモリとして約674 MiB (674MiB * 1048576B/MiB ~= 707MB) を使う。以下は 8GB のメモリを積むシステムで 12 並列 (707MB * 12 ~= 8481MB) させる例。topコマンドでプロセスごとにスワップアウト量を表示すると、xzの実行プロセスでスワップアウトしている事がわかる。
$ top -s -b -n 10 (snip) top - 21:47:42 up 4:01, 4 users, load average: 12.00, 12.01, 11.55 Tasks: 117 total, 14 running, 103 sleeping, 0 stopped, 0 zombie %Cpu0 : 99.7 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st %Cpu1 : 99.7 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st %Cpu2 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8198040 total, 8061196 used, 136844 free, 1712 buffers KiB Swap: 16774140 total, 574560 used, 16199580 free, 236604 cached PID USER PR NI VIRT RES SHR SWAP S %CPU %MEM TIME+ COMMAND 4325 hoge 20 0 682m 645m 944 29m R 50.5 8.1 14:07.55 xz -v -e -z -9 /home/hoge/*******************.pdf 4319 hoge 20 0 682m 615m 944 58m R 50.2 7.7 14:15.19 xz -v -e -z -9 /home/hoge/*******************.pdf 4320 hoge 20 0 682m 615m 944 58m R 50.2 7.7 14:05.30 xz -v -e -z -9 /home/hoge/*******************.pdf 4321 hoge 20 0 682m 615m 944 58m R 50.2 7.7 14:14.00 xz -v -e -z -9 /home/hoge/*******************.pdf 4322 hoge 20 0 682m 615m 944 58m R 50.2 7.7 14:05.38 xz -v -e -z -9 /home/hoge/*******************.pdf 4326 hoge 20 0 682m 634m 944 39m R 50.2 7.9 13:53.26 xz -v -e -z -9 /home/hoge/*******************.pdf 4316 hoge 20 0 682m 615m 944 58m R 49.9 7.7 14:11.34 xz -v -e -z -9 /home/hoge/*******************.pdf 4317 hoge 20 0 682m 615m 944 58m R 49.9 7.7 14:10.44 xz -v -e -z -9 /home/hoge/*******************.pdf 4318 hoge 20 0 682m 615m 944 58m R 49.9 7.7 14:11.12 xz -v -e -z -9 /home/hoge/*******************.pdf 4323 hoge 20 0 682m 624m 944 50m R 49.9 7.8 14:01.32 xz -v -e -z -9 /home/hoge/*******************.pdf 4324 hoge 20 0 682m 657m 932 16m R 49.9 8.2 13:53.88 xz -v -e -z -9 /home/hoge/*******************.pdf 4327 hoge 20 0 682m 674m 932 0 R 49.9 8.4 14:03.33 xz -v -e -z -9 /home/hoge/*******************.pdf (snip)
この時のvmstatの結果。si/soが時々出る感じ。
# vmstat 60 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 12 0 574284 132132 1912 236204 0 0 1790 25 1606 571 100 0 0 0 12 0 574272 141688 1976 228584 3 0 1728 31 1613 569 100 0 0 0 12 0 574232 121972 1992 248604 1 0 1763 28 1614 581 100 0 0 0 12 0 574192 129908 1988 241188 0 0 1713 29 1636 591 100 0 0 0 12 0 574148 138340 1988 232288 4 0 1719 28 1610 570 100 0 0 0 12 0 574112 120112 1996 250572 4 0 1707 26 1605 564 100 0 0 0 12 0 574096 127552 1960 243460 2 0 1730 31 1604 564 100 0 0 0 12 0 574084 131892 1952 238500 2 0 1789 26 1608 566 100 0 0 0 12 0 574028 132760 2896 236112 8 0 1834 29 1628 594 100 0 0 0 12 0 574028 142556 2904 226144 0 0 1719 27 1609 563 100 0 0 0 12 0 574028 123460 2392 246544 0 0 1741 28 1614 572 100 0 0 0 12 0 574028 133628 2032 236744 0 0 1749 29 1619 565 100 0 0 0 12 0 574028 140696 2024 229532 0 0 1728 25 1604 564 100 0 0 0 12 0 574028 122468 2040 248076 0 0 1724 26 1611 564 100 0 0 0 12 0 574024 130652 2032 239856 0 0 1711 26 1607 564 100 0 0 0 12 0 574024 142432 2016 227680 0 0 1711 24 1625 593 100 0 0 0 12 0 574012 125196 2032 245244 2 0 1717 31 1620 593 100 0 0 0 12 0 573984 134992 2032 234464 2 0 1734 25 1626 596 100 0 0 0 12 0 573964 141068 2024 228820 1 0 1746 28 1627 591 100 0 0 0 12 0 573940 123832 2048 246736 1 0 1708 28 1608 563 100 0 0 0 12 0 573908 133132 2032 236832 2 0 1721 28 1601 564 100 0 0 0 12 0 573856 139952 2040 229664 1 0 1742 29 1607 564 100 0 0 0 12 0 573832 144044 2016 225568 1 0 1818 26 1592 560 100 0 0 0 12 0 573800 127056 2040 243100 4 0 1719 34 1609 566 100 0 0 0 12 0 573660 132388 2056 236784 19 0 1777 23 1621 566 100 0 0 0 12 0 573588 139084 2056 229396 8 0 1750 33 1629 577 100 0 0 0 12 0 573560 118996 2068 250088 4 0 1757 26 1633 592 100 0 0 0 12 0 573548 130652 2056 238300 2 0 1742 29 1632 595 100 0 0 0 12 0 573532 135480 2048 232668 0 0 1741 29 1624 587 100 0 0 0 12 0 573508 145160 2040 223180 0 0 1749 23 1625 584 100 0 0 0 12 0 573484 144292 2032 223160 0 0 1841 33 1620 578 100 0 0 0 12 0 573456 127552 2064 240976 1 0 1775 25 1605 565 100 0 0 0 12 0 573432 131768 2072 236804 0 0 1766 29 1636 595 100 0 0 0 12 0 573428 138836 2080 229348 0 0 1749 25 1624 595 100 0 0 0
xzの出力には圧縮速度が表示される。およそ140KiB/sで12並列なので全体では1680KiB/s。これを一つの基準とする。
100 % 9,578.7 KiB / 760.8 MiB = 0.012 143 KiB/s 1:30:52 100 % 9,607.3 KiB / 762.5 MiB = 0.012 142 KiB/s 1:31:26 100 % 9,480.0 KiB / 765.8 MiB = 0.012 142 KiB/s 1:31:45 100 % 9,718.0 KiB / 761.6 MiB = 0.012 141 KiB/s 1:31:53 100 % 9,666.3 KiB / 764.1 MiB = 0.012 142 KiB/s 1:32:05 100 % 9,687.8 KiB / 763.3 MiB = 0.012 142 KiB/s 1:32:01 100 % 9,528.0 KiB / 765.0 MiB = 0.012 142 KiB/s 1:32:05 100 % 9,430.3 KiB / 767.3 MiB = 0.012 142 KiB/s 1:32:23 100 % 9,400.5 KiB / 769.0 MiB = 0.012 141 KiB/s 1:32:45 100 % 9,385.8 KiB / 767.5 MiB = 0.012 141 KiB/s 1:32:42 100 % 9,482.4 KiB / 768.3 MiB = 0.012 140 KiB/s 1:33:51 100 % 9,536.6 KiB / 768.2 MiB = 0.012 138 KiB/s 1:34:39
$ top -s -b -n 10 (snip) top - 00:15:04 up 6:29, 4 users, load average: 11.09, 11.09, 11.16 Tasks: 115 total, 13 running, 102 sleeping, 0 stopped, 0 zombie %Cpu0 : 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 99.3 us, 0.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8198040 total, 8054476 used, 143564 free, 2856 buffers KiB Swap: 16774140 total, 357556 used, 16416584 free, 707528 cached PID USER PR NI VIRT RES SHR SWAP S %CPU %MEM TIME+ COMMAND 4456 hoge 20 0 682m 635m 944 38m R 81.7 7.9 39:22.33 xz -v -e -z -9 /home/hoge/*******************.pdf 4459 hoge 20 0 682m 635m 944 38m R 57.5 7.9 39:51.85 xz -v -e -z -9 /home/hoge/*******************.pdf 4454 hoge 20 0 682m 637m 944 36m R 53.9 8.0 39:04.71 xz -v -e -z -9 /home/hoge/*******************.pdf 4452 hoge 20 0 682m 640m 944 33m R 52.9 8.0 39:01.11 xz -v -e -z -9 /home/hoge/*******************.pdf 4455 hoge 20 0 682m 648m 932 25m R 52.9 8.1 39:50.16 xz -v -e -z -9 /home/hoge/*******************.pdf 4458 hoge 20 0 682m 634m 944 39m R 50.6 7.9 39:25.82 xz -v -e -z -9 /home/hoge/*******************.pdf 4453 hoge 20 0 682m 639m 944 34m R 50.3 8.0 39:40.34 xz -v -e -z -9 /home/hoge/*******************.pdf 4451 hoge 20 0 682m 646m 944 27m R 49.9 8.1 39:47.57 xz -v -e -z -9 /home/hoge/*******************.pdf 4457 hoge 20 0 682m 647m 932 26m R 49.9 8.1 39:28.45 xz -v -e -z -9 /home/hoge/*******************.pdf 4450 hoge 20 0 682m 651m 944 22m R 49.6 8.1 39:58.86 xz -v -e -z -9 /home/hoge/*******************.pdf 4460 hoge 20 0 682m 662m 932 11m R 49.6 8.3 39:31.50 xz -v -e -z -9 /home/hoge/*******************.pdf (snip)
# vmstat 60 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 11 0 357568 145060 2776 705292 1 0 1831 33 1623 491 100 0 0 0 11 0 357556 119268 2848 732116 1 0 1831 32 1610 478 100 0 0 0 11 0 328940 835368 2888 674572 4 0 1822 32 1612 484 100 0 0 0
11並列の場合、およそ156KiB/sなので全体では1716KiB/s。12並列よりも高速。
100 % 9,468.7 KiB / 685.5 MiB = 0.013 157 KiB/s 1:14:17 100 % 9,525.2 KiB / 683.9 MiB = 0.014 157 KiB/s 1:14:20 100 % 9,521.9 KiB / 686.3 MiB = 0.014 157 KiB/s 1:14:24 100 % 9,577.3 KiB / 692.3 MiB = 0.014 158 KiB/s 1:14:40 100 % 9,454.4 KiB / 687.2 MiB = 0.013 156 KiB/s 1:14:57 100 % 9,626.2 KiB / 688.9 MiB = 0.014 156 KiB/s 1:15:10 100 % 9,528.9 KiB / 690.6 MiB = 0.013 157 KiB/s 1:15:10 100 % 9,498.4 KiB / 688.1 MiB = 0.013 156 KiB/s 1:15:24 100 % 9,556.5 KiB / 684.6 MiB = 0.014 154 KiB/s 1:15:44 100 % 9,538.8 KiB / 689.8 MiB = 0.014 155 KiB/s 1:15:54 100 % 9,559.8 KiB / 691.5 MiB = 0.014 155 KiB/s 1:16:08
10並列の場合
top - 00:37:13 up 6:51, 4 users, load average: 10.99, 10.86, 10.87 Tasks: 113 total, 12 running, 101 sleeping, 0 stopped, 0 zombie %Cpu0 : 99.3 us, 0.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8198040 total, 8036348 used, 161692 free, 2808 buffers KiB Swap: 16774140 total, 14064 used, 16760076 free, 1046056 cached PID USER PR NI VIRT RES SHR SWAP S %CPU %MEM TIME+ COMMAND 4567 hoge 20 0 682m 674m 928 0 R 84.8 8.4 7:20.44 xz -v -e -z -9 /home/hoge/*********************.pdf 4568 hoge 20 0 682m 674m 928 0 R 63.8 8.4 7:06.72 xz -v -e -z -9 /home/hoge/*********************.pdf 4575 hoge 20 0 682m 674m 928 0 R 63.8 8.4 7:04.75 xz -v -e -z -9 /home/hoge/*********************.pdf 4570 hoge 20 0 682m 674m 928 0 R 63.5 8.4 7:13.51 xz -v -e -z -9 /home/hoge/*********************.pdf 4566 hoge 20 0 682m 674m 928 0 R 61.2 8.4 7:15.41 xz -v -e -z -9 /home/hoge/*********************.pdf 4573 hoge 20 0 682m 674m 928 0 R 58.8 8.4 7:10.29 xz -v -e -z -9 /home/hoge/*********************.pdf 4572 hoge 20 0 682m 674m 928 0 R 57.2 8.4 7:12.47 xz -v -e -z -9 /home/hoge/*********************.pdf 4569 hoge 20 0 682m 674m 928 0 R 50.2 8.4 7:17.02 xz -v -e -z -9 /home/hoge/*********************.pdf 4571 hoge 20 0 682m 674m 928 0 R 49.5 8.4 7:07.88 xz -v -e -z -9 /home/hoge/*********************.pdf 4574 hoge 20 0 682m 674m 928 0 R 45.9 8.4 7:02.30 xz -v -e -z -9 /home/hoge/*********************.pdf
10並列の場合、およそ260KiB/sなので全体では2600KiB/s。12,11並列よりも高速。
100 % 10.4 MiB / 362.1 MiB = 0.029 267 KiB/s 23:06 100 % 10.4 MiB / 356.4 MiB = 0.029 263 KiB/s 23:07 100 % 10.4 MiB / 358.3 MiB = 0.029 261 KiB/s 23:27 100 % 10.4 MiB / 359.3 MiB = 0.029 260 KiB/s 23:36 100 % 10.4 MiB / 357.4 MiB = 0.029 256 KiB/s 23:47 100 % 10.4 MiB / 361.2 MiB = 0.029 258 KiB/s 23:55 100 % 10.4 MiB / 360.2 MiB = 0.029 256 KiB/s 24:02 100 % 10.3 MiB / 364.9 MiB = 0.028 259 KiB/s 24:05 100 % 10.4 MiB / 363.0 MiB = 0.029 255 KiB/s 24:15 100 % 10.3 MiB / 364.0 MiB = 0.028 252 KiB/s 24:40