У меня проблема с tar. Я храню около 120 ГБ небольших файлов и чувствую, что попал в узкое место.
Моя система имеет 3 HD, один для системы (sda), один с файлами (sdb) и один целевой HD для файлов tar (sdc). Система предназначена для резервного копирования, поэтому больше ничего не делает.
Когда работает tar, я вижу, что исходный HD пишет очень часто. И мой вопрос почему? (см. SDB)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
sdb 461.00 11304.00 3776.00 11304 3776
sdc 0.00 0.00 0.00 0 0
Сначала я подумал, что это опция atime, для доступа к файлам потребуется обновление inode. Так что я отключил это в fstab.
mount:
/dev/sdb1 on /disk1 type ext4 (rw,noatime)
/dev/sdc1 on /disk2 type ext4 (rw)
Но проблема не ушла. Тар все еще задыхается в соответствии с dstat: (см. CSW)
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
4 1 85 11 0 0|6301k 4434k| 0 0 | 0 0 | 387 1317
0 0 68 31 0 0| 28k 44M| 66B 834B| 0 0 | 223 233
0 0 75 25 0 0| 0 408k| 66B 370B| 0 0 | 102 53
0 0 75 25 0 0| 0 516k| 126B 396B| 0 0 | 122 66
0 0 70 30 0 0| 0 1496k| 66B 354B| 0 0 | 154 109
0 0 77 22 0 0|4096B 1484k| 66B 354B| 0 0 | 155 79
0 0 77 23 0 0| 40k 552k| 336B 370B| 0 0 | 78 133
0 1 72 27 0 0| 40k 640k| 66B 370B| 0 0 | 164 126
0 0 75 25 0 0| 16k 580k| 66B 370B| 0 0 | 131 65
0 0 75 25 0 0| 0 316k| 66B 370B| 0 0 | 81 53
1 0 73 26 0 0| 132k 676k| 366B 396B| 0 0 | 162 143
0 0 76 23 0 0| 108k 608k| 66B 370B| 0 0 | 197 217
0 0 71 28 0 0| 112k 592k| 66B 370B| 0 0 | 178 155
0 0 67 33 0 0| 0 328k| 66B 370B| 0 0 | 81 73
8 1 63 28 0 0|5308k 4096B| 66B 354B| 0 0 | 705 2600
15 2 62 21 0 1|9452k 0 | 66B 370B| 0 0 |1158 4343
17 2 61 20 0 0| 11M 0 | 66B 354B| 0 0 |1256 5027
10 1 66 24 0 0|5272k 1308k| 66B 354B| 0 0 | 786 2804
14 2 63 20 0 1|9980k 0 | 66B 370B| 0 0 |1257 4766
15 3 61 21 0 1| 10M 12k| 66B 354B| 0 0 |1179 468
Точная команда, которую я использую:
tar -c /disk1/files 2>/dev/null | pigz -p 8 > /disk2/file.tar.gz
HD-диски могут легко читать / записывать 100 Мбит / с, но все же они чертовски медленны.
Top shows:
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.6%us, 0.8%sy, 0.0%ni, 84.9%id, 10.6%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 7985320k total, 7784168k used, 201152k free, 3311500k buffers
Swap: 23393276k total, 0k used, 23393276k free, 3753780k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19179 johan 20 0 150m 6136 536 S 42 0.1 19:57.48 pigz
19178 johan 20 0 19772 1312 1024 D 4 0.0 2:25.52 tar
47 root 20 0 0 0 0 S 2 0.0 2:07.03 kswapd0
19317 johan 20 0 93336 1668 732 S 2 0.0 0:00.30 sshd
1 root 20 0 23764 1780 1104 S 0 0.0 0:01.55 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
Что я могу сделать, чтобы ускорить это?