Есть патч для coreutils.
Хотелось “автоматизировать” наложение сего патча. Попробовал его наложить шаблонами. Но каменный цветок не вышел. Патч “не накладывается”
Шаблон такой:
$ head -1 /var/calculate/templates/2_ac_install_patch/sys-apps/coreutils/advcpmv-0.5-8.21.patch
# Calculate format=diff merge(sys-apps/coreutils)==8.21
<<>>
Прикольно, у вас мой старый .screenrc, приятно знать что не зря когда-то выкладывал Зацените новый, слегка допиленный вариант, с блекджеком и шл… более грамотным расположением элементов, теперь когда много окон, или длинный заголовок, часы не уйдут за пределы видимости, ну и память считается из /proc/meminfo (раньше я кажись free дергал и парсил, а это дольше), плюс батарейка сейчас считается по-другому(когда она есть).
В общем - гляньте, может даже что предложите о чем я не подумал.
<<>>
По теме - афигенная функция, ее бы, как минимум через IUSE в ebuild включить не мешало-бы. Порою такого очень не хватает. Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.
Зацените новый, слегка допиленный вариант, с блекджеком и шл… более грамотным расположением элементов, теперь когда много окон, или длинный заголовок, часы не уйдут за пределы видимости, ну и память считается из /proc/meminfo (раньше я кажись free дергал и парсил, а это дольше), плюс батарейка сейчас считается по-другому(когда она есть).
Да, на одной из машин ваш вариант остался
P.S. Добавил после… Новый вариант - Отличный вариант. Спасибо!
По теме - афигенная функция, ее бы, как минимум через IUSE в ebuild включить не мешало-бы. Порою такого очень не хватает.
В принципе да, флажок не помешал бы. Но пока хватит и просто “штатного” и работающего механизма накладывания патчей
Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.
CPU% на папке в 100Гб: <<“ntfs-3g”>> - 54, <<"cp gr">> 13
Да, на одной из машин ваш вариант остался
P.S. Добавил после… Новый вариант - Отличный вариант. Спасибо!
так плюсаните предложение, если вариант понравился. Такой маленький знак поможет разрабам увидеть, что не одному мне этот шаблон нужен.
Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.
CPU% на папке в 100Гб: “ntfs-3g” - 54, "cp gr" 13
А что по времени?
Предлагаю, ради теста, засечь время копирования чего-то тяжелого, чего-то попроще, и вообще что-то мелкое, с ключом и без.
К примеру следующим образом:
<code class="sh">
for k in '' 'g'; do
mkdir -pv /var/calculate/tmp/test
for d in /usr/portage /var/lib/layman/calculate /bin; do
sync
time cp -a${k} ${d} /var/calculate/tmp/test
done
rm -rf /var/calculate/tmp/test
done
</code>
Это если есть машина на которой можно все остальные службы остановить (для чистоты эксперемента).
Мне интересно на сколько может упасть скорость копирования на больших и малых количествах файлов.
Вот почему я предлагаю данные директории:
Забавные результаты
Всё таки линупс это сила! Чем больше ОЗУ (на тестовой машине 8Гб), тем больше реальной пользы!
Походу файловый кеш. я надеялся что он так сильно не скажется(и что рамы у вас поменьше).
Если честно - хз как его почистить (разве что активно начать читать все остальное, чтоб он другими данными забился), надежно почистит только ребут (опять-же из того что я знаю).
У вас есть возможность провести этот тест на машине которую можно ребутить?
Т.е. сделать так:
# Перезагрузите комп
# Как запустится - запустите скрипт
rm -rf /var/calculate/tmp/test
mkdir -pv /var/calculate/tmp/test
for d in /usr/portage /var/lib/layman/calculate /bin; do
sync
cmd="cp -a ${d} /var/calculate/tmp/test"
echo "# $cmd"
time $cmd
done 2>&1 >/tmp/result.log
wgetpaste /tmp/result.log >~/__first_run_log_url
rm -rf /var/calculate/tmp/test
# Снова перезагрузите комп
# Теперь запустите скрипт
rm -rf /var/calculate/tmp/test
mkdir -pv /var/calculate/tmp/test
for d in /usr/portage /var/lib/layman/calculate /bin; do
sync
cmd="cp -ag ${d} /var/calculate/tmp/test"
echo "# $cmd"
time $cmd
done 2>&1 >/tmp/result.log
wgetpaste /tmp/result.log >~/__second_run_log_url
rm -rf /var/calculate/tmp/test
По итогу - файлы ~/__first_run_log_url и ~/__second_run_log_url закиньте сюда
# cp -a /usr/portage /var/calculate/tmp/test
real 4m47.424s
user 0m22.156s
sys 0m2.210s
# cp -a /var/lib/layman/calculate /var/calculate/tmp/test
real 0m17.867s
user 0m2.578s
sys 0m0.267s
# cp -a /bin /var/calculate/tmp/test
real 0m0.863s
user 0m0.021s
sys 0m0.011s
_second_run_log_url:
# cp -ag /usr/portage /var/calculate/tmp/test/
130309 files (852.6 MiB) copied in 274.6 seconds ( 1.1 MiB/s).
real 4m34.567s
user 0m33.925s
sys 0m2.539s
# cp -ag /var/lib/layman/calculate /var/calculate/tmp/test/
13646 files (101.1 MiB) copied in 17.2 seconds ( 2.0 MiB/s).
real 0m17.247s
user 0m3.727s
sys 0m0.276s
# cp -ag /bin /var/calculate/tmp/test/
93 files ( 8.9 MiB) copied in 0.8 seconds ( 10.2 MiB/s).
real 0m0.843s
user 0m0.036s
sys 0m0.012s
Да, но прежде всего меня интересует: почему при помощи шаблона - патч не наложился?
Результаты действительно странные.
Общая продолжительность выполнения с ключом -g меньше, но время пользователя в полтора раза выше, и время ядра очень незначительно выше. Расшифровка значений утилиты time
А выполнять в другом порядке пробовали?
Да, но прежде всего меня интересует: почему при помощи шаблона - патч не наложился?
наложится.
Но это, имхо, моветон. Правильнее было-бы предложить фичреквест на https://bugs.gentoo.org
Приложите пожалуйста патч (с заголовками шаблона) или заархивируйте ветку (со всеми .calculate_directory) /var/calculate/templates/2_ac_install_patch/sys-apps/coreutils/advcpmv-0.5-8.21.patch.
А не. Наглейшим образом вру. Применяется патч и при сборке.
Просто разрабы кальки почему-то, на мой взгляд, не ту фазу для их применения выбрали - “compile”, хотя для этого есть специальная фаза “prepare”… Но это пусть будет на их совести
Во вложении архив с моими шаблонами для применения этого патча. Пользуйтесь на здоровье
ЗЫ
Архив надо распаковать в каталог /var/calculate/templates