Как это возможно в этом `cat`-процессе, когда пишется больше байтов, чем читается?
1049
Remi.b
Я запустил следующую команду bash, чтобы объединить несколько больших файлов
cat file1.txt file2.txt file3.txt file4.txt > merged.txt
Процесс очень длинный, поскольку файлы занимают около 12 ГБ каждый. На activity monitor
(Mac OSX 10.11.3) на вкладке под названием Disk
я вижу следующую запись для интересующего процесса
Как возможно, что в этом cat
процессе записывается больше байтов, чем читается?
Я не знаю OSX, но, возможно, общее количество мониторов включает доступ к диску во время замены. Если операционная система перезаписывает программу на диск, но она снова становится активной, прежде чем что-либо еще использует ее ОЗУ, то копия памяти будет использоваться для ее возобновления без повторного считывания.
AFH 7 лет назад
0
Не зная и OSX, я предполагаю, что «записанные» данные включают в себя inode, обновляемые по мере того, как файл увеличивается, чтобы занимать их. Это не будет включено в данные «Чтение», потому что метаданные всех, кроме первого инода, несущественны для `cat`. Либо он может получить доступ к файлу, либо нет, а временные метки и т. Д. Игнорируются `cat` во входных файлах. Однако выходной файл, который создает оболочка, должен воспроизводить метаданные файла в каждом иноде, который используется для нового файла.
Gypsy Spellweaver 7 лет назад
0
@GypsySpellweaver - Хороший вопрос. В любой установленной файловой системе может быть время доступа, поэтому строго возможно, что временные метки обновляются при чтении, хотя только для пары файлов! Но вы заставили меня задуматься о другом: если цель находится в журналируемой файловой системе, то будут как записи в журнале, так и данные. Я удивлен, что все это может составить 10% накладных расходов в этом вопросе. Может быть, это просто различия в двух разделах, размер кластера и фрагментации в частности.
AFH 7 лет назад
1
Также я не знаю OSX. Я читал, что HFS + не поддерживает разреженные файлы; но в случае другой файловой системы я бы предположил, что по крайней мере один входной файл (частично) разрежен, а выходной файл - нет. Когда я `cat` полностью разреживаю файл в другой файл в Linux (файловая система BTRFS),` iotop` указывает, что процесс читает очень мало и пишет много. Разреженный текстовый файл встречается редко, так что это мое очень общее замечание.
Kamil Maciorowski 6 лет назад
0
Этот вопрос следует повторить, чтобы задать вопрос о мониторе активности. Я не вижу никаких данных, свидетельствующих о том, что было написано больше, чем было прочитано - только тот монитор активности, который был зарегистрирован как таковой. Подсчитайте байты в результирующем файле и, скорее всего, это сумма входных файлов.
sage 6 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
.profile в Mac OS X?
-
2
Какое использование диска используют видео в формате RAW?
-
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
6
Можно ли безопасно изменить размер раздела? Windows XP, NTFS
-
10
Как я могу найти в истории bash и повторно запустить команду?
-
2
Можно ли передать выходные данные одной команды двум другим командам?
-
12
Восстановление дискового пространства в Windows
-
21
Как я могу визуализировать использование файловой системы в Windows?
-
8
Переименуйте группу файлов одной командой