ZSTD_NBTHREADS can be used to set the number of threads zstd will attempt to use during compression. If the value of ZSTD_NBTHREADS is not a valid unsigned integer, it will be ignored with a warning message. ZSTD_NBTHREADS has a default value of max(1, min(4, nbCores/4)),
А ещё я посмотрел htop. На четырёхядерной системе zstd активно работает в один поток, а на восьмиядерной — в два. Наверное, активно работающие потоки это как раз те потоки, которые используются для компрессии. Что соответствует приведённой формуле.
Спасибо, что напомнили про zstd. В заметке, кстати, его отметил. Опцию -O не нахожу в документации на установленную у меня версию zstd.
Что касается количества потоков, которые создаёт zstd при своей работе. Если действительно часто приходится сжимать большие объёмы данных, то вместо явного указания опций zstd удобнее установить переменные окружения ZSTD_NBTHREADS и ZSTD_CLEVEL, например, в пользовательском профиле. По умолчанию, кстати, zstd работает не в 2 потока, а в в зависимости от количества процессорных ядер от 1 до 4.
На мой взгляд, важность опций zstd для указания количества потоков и коэффициента сжатия переоценена. Провёл небольшой эксперимент эксперимент (измерения проводил несколько раз):
❯ sudo du -sh /usr
2,1G /usr
❯ =time -p sudo tar -C / --zstd -cf /dev/shm/1.tar.zst usr
real 5.54
user 0.00
sys 0.00
❯ ll /dev/shm/1.tar.zst
-rw-r--r-- 1 root root 917M апр 8 21:38 /dev/shm/1.tar.zst
❯ =time -p sudo ZSTD_NBTHREADS=8 tar -C / --zstd -cf /dev/shm/1.tar.zst usr
real 5.47
user 0.00
sys 0.00
❯ =time -p sudo ZSTD_CLEVEL=19 ZSTD_NBTHREADS=8 tar -C / --zstd -cf /dev/shm/1.tar.zst usr
real 167.41
user 0.00
sys 0.00
❯ ll /dev/shm/1.tar.zst
-rw-r--r-- 1 root root 810M апр 8 21:44 /dev/shm/1.tar.zst
С маленьким коэффициентом сжатия количество потоков zstd не оказывают существенного влияния на общую скорость работы. С высоким коэффициентом сжатия архив становится меньше примерно на 11%, но время сжатия возрастает прям существенно, более чем в 30 раз. На маленьких объёмах данных практической разницы не будет. На больших объёмах данных надо будет подбирать параметры компрессии, это займёт значительно больше времени, чем само сжатие. И в любом случае нет гарантии, что удастся существенно увеличить коэффициент сжатия. Обычному пользователю редко это всё может понадобиться.
Если у Вас другие экспериментальные данные, то поделитесь, пожалуйста.
Да, tarpipe иногда полезен. В чистом виде не часто используется, т.к. команда cp позволяет как сохранять атрибуты файлов, так и корректно обрабатывать специальные файлы (в зависимости от реализации, конечно). К тому же для сохранения владельцев нужно запускать tar от root-а.
Чаще, на мой взгляд, tarpipe применяется при передаче по сети, например, при помощи netcat. Создаётся сетевой канал и с одной стороны распаковывается поток, а с другой запаковывать tar-ом.
Спасибо, хорошие уточнения. Действительно, составная команда позволяет указывать любые параметры компрессии, можно поиграться в т.ч. и с тонкими настройками.
tar cfv /dev/st0 файлы
Точно так же с помощью tar можно было переносить файлы с одной машины на другую без файловой системы на дискете.
Покупая продукцию вы вкладываетесь в развитие производства, т.к. рачительный производитель заинтересован в развитии и будет часть прибыли вкладывать в развитие.
Если IT предпринимательство это сборка, продажа и настройка, то пользы промышленности это принесёт мало.
В статье говорилось о К1801ВМ1, потенциал которого не был раскрыт в своё время полностью. И дальнейшее развитие он не получил. Вместо этого был переход на x86.
А я поздно к фидо подключился, т.к. долго комп (а потом и модем) не мог себе позволить. Потом долго не хотел регать ноду over 1000, т.к. зашквар. В итоге — 2:5030/1368. Жаль, что это время прошло.
Не на всех моделях, не все смогут настроить. Остальные будут смотреть рекламу такси и колготок в штатном приложении Настройки. Очень приличные телефончики.
Можете рассказать подробнее, какие проблемы решаете при помощи мутекса на примере следующего кода?
Судя по остальным ОС и версии ядра это Slackware 3.1 (Slackware 96).
Это согласно мануалу:
А ещё я посмотрел htop. На четырёхядерной системе zstd активно работает в один поток, а на восьмиядерной — в два. Наверное, активно работающие потоки это как раз те потоки, которые используются для компрессии. Что соответствует приведённой формуле.
Спасибо, что напомнили про zstd. В заметке, кстати, его отметил. Опцию -O не нахожу в документации на установленную у меня версию zstd.
Что касается количества потоков, которые создаёт zstd при своей работе. Если действительно часто приходится сжимать большие объёмы данных, то вместо явного указания опций zstd удобнее установить переменные окружения ZSTD_NBTHREADS и ZSTD_CLEVEL, например, в пользовательском профиле. По умолчанию, кстати, zstd работает не в 2 потока, а в в зависимости от количества процессорных ядер от 1 до 4.
На мой взгляд, важность опций zstd для указания количества потоков и коэффициента сжатия переоценена. Провёл небольшой эксперимент эксперимент (измерения проводил несколько раз):
С маленьким коэффициентом сжатия количество потоков zstd не оказывают существенного влияния на общую скорость работы. С высоким коэффициентом сжатия архив становится меньше примерно на 11%, но время сжатия возрастает прям существенно, более чем в 30 раз. На маленьких объёмах данных практической разницы не будет. На больших объёмах данных надо будет подбирать параметры компрессии, это займёт значительно больше времени, чем само сжатие. И в любом случае нет гарантии, что удастся существенно увеличить коэффициент сжатия. Обычному пользователю редко это всё может понадобиться.
Если у Вас другие экспериментальные данные, то поделитесь, пожалуйста.
Да, это вариант tarpipe. Ниже о нём вспоминали.
Да, tarpipe иногда полезен. В чистом виде не часто используется, т.к. команда cp позволяет как сохранять атрибуты файлов, так и корректно обрабатывать специальные файлы (в зависимости от реализации, конечно). К тому же для сохранения владельцев нужно запускать tar от root-а.
Чаще, на мой взгляд, tarpipe применяется при передаче по сети, например, при помощи netcat. Создаётся сетевой канал и с одной стороны распаковывается поток, а с другой запаковывать tar-ом.
Спасибо, хорошие уточнения. Действительно, составная команда позволяет указывать любые параметры компрессии, можно поиграться в т.ч. и с тонкими настройками.
Точно так же с помощью tar можно было переносить файлы с одной машины на другую без файловой системы на дискете.
Спасибо за ссылку, добавил в заметку в раздел «Поддержка стандартов языка Си в компиляторах».
Спасибо. Это верное замечание, отметил в заметке.
Спасибо за замечание. Добавил упоминание restrict в нововведения C99.
Прошу прощения, почему-то у меня мелкая фотка сохранилась изначально. Заменил на уменьшенную оригинальную.
Не могу не написать тут для тех, кто в материале.
Русские физики выбирают Slackware.
Теорию в школе можно изучать в 16, практику проходить и сдавать экзамен в ГИБДД в 17, потом за правами подойти в 18.
Хотели назвать Я.Плачу. Но получилось неоднозначно. Практически ЯПлакалъ.
Покупая продукцию вы вкладываетесь в развитие производства, т.к. рачительный производитель заинтересован в развитии и будет часть прибыли вкладывать в развитие.
Если IT предпринимательство это сборка, продажа и настройка, то пользы промышленности это принесёт мало.
В статье говорилось о К1801ВМ1, потенциал которого не был раскрыт в своё время полностью. И дальнейшее развитие он не получил. Вместо этого был переход на x86.
А я поздно к фидо подключился, т.к. долго комп (а потом и модем) не мог себе позволить. Потом долго не хотел регать ноду over 1000, т.к. зашквар. В итоге — 2:5030/1368. Жаль, что это время прошло.
-pedantic не всегда дружит со старым кодом. -Werror это для того, чтобы было не лень пофиксить предупреждения, или просто их не пропустить.
gcc -Wall -Wextra -pedantic -Werror хотя бы по умолчанию. Хотя -pedantic по желанию.
Есть же консольная игра FIDO. Гуглится, да и на Хабре были статьи.
Не на всех моделях, не все смогут настроить. Остальные будут смотреть рекламу такси и колготок в штатном приложении Настройки. Очень приличные телефончики.