tmpfs /var/tmp/portage
torovich 23 февраля, 2011 - 03:59
Всем привет!
Решил ускорить на сврём нетбуке компиляцию по http://ru.gentoo-wiki.com/wiki/%D0%A3%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_portage_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_tmpfs.
Добавил в fstab:
tmpfs /var/tmp/portage tmpfs size=1000M,mode=0777 0 0 tmpfs /tmp tmpfs defaults 0 0
Решил проверить. Вот что получилось.
# df -t tmpfs Файловая система 1K-блоков Исп Доступно Исп% смонтирована на rc-svcdir 1024 112 912 11% /lib/rc/init.d udev 10240 264 9976 3% /dev shm 510352 0 510352 0% /dev/shm tmpfs 1024000 0 1024000 0% /var/tmp/portage tmpfs 510352 152 510200 1% /tmp
# genlop -t qutim
* net-im/qutim
Sat Nov 20 02:10:50 2010 >>> net-im/qutim-0.2.0-r3
merge time: 27 minutes and 23 seconds.
Tue Dec 7 19:31:32 2010 >>> net-im/qutim-0.2.0-r3
merge time: 24 minutes and 31 seconds.
Wed Feb 23 02:43:37 2011 >>> net-im/qutim-0.2.0-r3
merge time: 25 minutes and 37 seconds.
# genlop -t xneur gxneur * x11-misc/xneur Thu Nov 25 17:27:25 2010 >>> x11-misc/xneur-0.9.9 merge time: 2 minutes and 45 seconds. Fri Nov 26 11:56:44 2010 >>> x11-misc/xneur-0.9.9 merge time: 2 minutes and 43 seconds. Mon Nov 29 17:41:59 2010 >>> x11-misc/xneur-0.9.9 merge time: 2 minutes and 39 seconds. Sat Feb 19 06:14:53 2011 >>> x11-misc/xneur-0.9.9 merge time: 2 minutes and 45 seconds. Wed Feb 23 02:13:47 2011 >>> x11-misc/xneur-0.9.9 merge time: 2 minutes and 44 seconds. * x11-misc/gxneur Thu Nov 25 17:20:36 2010 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 56 seconds. Fri Nov 26 11:58:31 2010 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 47 seconds. Mon Nov 29 17:43:44 2010 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 45 seconds. Tue Dec 7 11:23:46 2010 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 44 seconds. Sat Feb 19 06:18:43 2011 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 51 seconds. Sun Feb 20 02:31:14 2011 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 56 seconds. Wed Feb 23 02:15:34 2011 >>> x11-misc/gxneur-0.9.9 merge time: 1 minute and 47 seconds.
Жирным выделена компиляция с tmpfs. Вопрос: "Где уменьшение времени компиляции?"
»
- Для комментирования войдите или зарегистрируйтесь
А памяти сколько? Посмотрите
А памяти сколько?
Посмотрите статистику - полагаю у вас все в своп ушло... :)
?
Пардон, а при чём тут tmpfs и время компейляции?
Насколько я понимаю, tmpfs позволяет ускорить распаковку тарболлов, плюс уменшить время доступа к исходным файлам, но
время компиляции - в прямой зависимости от мощности камня.
Согласен, неправильно
Согласен, неправильно написал. Но смысл в том, что в wiki написано ускорение установки, переустановки, обновления на 10%. При обновлении одного пакета - роли не играет, а при обновлении мира - уже существенно.
FYI: общее время компиляции
FYI: общее время компиляции уменьшается за счет существенного сокращения дискового ввода/вывода при правильном выборе и конфигурации файловых систем.
willy написал(а): Пардон, а
присоединяюсь! тоже не понимаю этого ))
даже при стандартной настройке, все i/o кешируются в памяти, что равносильно tmpfs ;) я использую tmpfs просто для уменьшения i/o, так сказать для более долгой жизни винта )) особенно это полезно тем, у кого ssd, имхо... а для скорости лучше использовать distcc или ccache ;)
Theli написал:...
Во-первых, "откуда дровишки"? :-) оно IMHO?
Во-вторых, при компиляции (точнее - при трансляции) много пишется в объектные файлы, по большому счёту являющимися временными, соотв., располагая их в tmpfs, реальных дисковых операций производится значительно меньше. Это ощутимо даже "органолептически" (по светодиоду), невооружённым глазом наблюдая активность дисковой подсистемы - разницу не заметить просто невозможно
ccache может помочь только при повторной компиляции или (иногда) при обновлении в виде патча. При обычном обновлении из нового тарболла (и тем более при первичной инсталляции), ccache не только не помогает, но даже мешает, увеличивая кол-во дисковых операций для сохранения результатов (которые с высокой степенью вероятности никогда не понадобятся)
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Spoiler
ну, вообще-то в линуксе используется отложенная запись, и в зависимости от выбора ФС получается более или менее агрессивное кеширование данных... правильнее даже будет сказать, что кешируются не файлы, а блоки данных...
а имхо было про ssd ;)
если оперативы достаточно и параметр swapiness приближен к нулю, то, если кешированный файл не был выдавлен из оперативы, то реального дискового обращения и не произойдет... лампочка не моргнет...
я в курсе... каждой программе свой частный случай для применения ;)
Theli написал(а): Spoiler
Это теоритически, а на практике, при 8 гигах оперативы ещё как моргала, до переноса tmpfs в shm.
Что до swapiness, то он с довольно давно автоматически меняется ядром, да и памяти оперативной у ТС аж цельный гигабайт...
Theli написал(а): вообще-то в
То, о чём вы говорите - не кэширование данных, а кэширование команд I/O, это работа планировщика,.никоим образом не уменьшающая кол-во дисковых операций, а лишь группирующая и распределяющая их во времени. К сож., при этом даже в случае, когда по мнению GCC запись уже не актуальна, она всё равно будет выполнена, поск-ку команда контроллеру была в своё время выдана и закэширована
Шалите. Так произойдёт как раз в том случае, если, как вы называете, "реальное дисковое обращение" обращается к tmpfs, поск-ку в памяти приложения (конкретно - GCC) происходит манипуляция "сырыми данными" во внутреннем представлении, а все результаты этих манипуляций - это и есть объектные файлы, в обязательном порядке выводятся наружу (на диск или tmpfs) для того, чтобы их можно было использовать в своих произвольных целях тому, кто дал задание на сборку. При чём выводятся не моментально в готовом виде, а открываются на последовательную запись и обращений к ним множество (что также действительно и для лога сборки)... Это уже portage всё подчищает - ему оно не нужно, а если будете компилить вручную - увидите, в этом случае достаточно легко помониторить...
Дык конкретно для ccache, который вы рекомендуете для ускорения, этот случай ну ооочень частный, в отличие от значительно более массового случая, когда он просто вреден...
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Spoiler написал(а): конкретно
стоп-стоп-стоп!!! если я его назвал, это еще не значит, что я его рекомендую!!!
Спасибо за ликбез. distcc не
Спасибо за ликбез. distcc не использую, хотя и есть другой компьютер но там Windows, жена и дети. ccache тоже не включен.
Памяти 1 гиг. При работе
Памяти 1 гиг. При работе emerge смотрел df. tmpfs /var/tmp/portage - используется 5%. Своп вообще не используется (есть но 0% использования). Оперативки использовано процентов 15. Специально выключил все программы.
Думаю с гигом ОЗУ и с таким
Думаю с гигом ОЗУ и с таким процессором оно не скажется сильно, у меня вот вынос /tmp на usb-hdd не особенно затормозил сборку, видать дальше просто некуда тупить.
1. Предлагаю вынести весь
1. Предлагаю вынести весь /var/tmp/ в tmpfs
2. Смотреть/писать sar'oм во время компилюции и покажите сюда.
С sar'ом пока не разобрался.
С sar'ом пока не разобрался. В каком он пакете?
app-admin/sysstat Там же есть
app-admin/sysstat
Там же есть еще интересная штучка, которая вам может пригодиться: iostat
Сделал так: # df Файловая
Сделал так:
Ядро компилится пол часа. Думаю для n270 - это нормально.
ядро компилиться не
ядро компилиться не /var/tmp/, а в/usr/src/linux
Выставлен ли в make.conf
Выставлен ли в make.conf -pipe и ccache?
http://forums.gentoo.org/viewtopic-p-6233551.html
http://www.gentoo.ru/node/13222
vanitas vanitatum et omnia vanitas
ccache даёт выгрыш только при
ccache даёт выгрыш только при частых пересборках одинаковых пакетов, но вот затормаживает первую сборку всегда. Его применение в обычных системах только затормаживает процесс.
+10
+10
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Я имел ввиду, если в
Я имел ввиду, если в make.conf выставлены -pipe и ccache, они могут быть причиной увеличения времени сборки в tmpfs.
vanitas vanitatum et omnia vanitas
как -pipe может увеличивать
как -pipe может увеличивать время сборки?
-pipe – передавать
http://optimization.hardlinux.ru/?page_id=34
http://optimization.hardlinux.ru/
Насколько я понимаю, -pipe убыстряет копиляцию на харде, сохраняя промежуточные результаты в оперативке. При tmpfs компиляция и так происходит в оперативке, так что -pipe, имхо, нецелесообразен. Поправьте меня, если я ошибаюсь.
vanitas vanitatum et omnia vanitas
Это самое подробное
Это самое подробное обоснование(по вашей ссылке):
но мне оно ничего не объясняет. т.к.не могу сказать, что заню досконально, что и как происходит, то вопрос остается открытым.
однако.. Fri Feb 25 10:44:57
однако..
1 -- tmpfs, без -pipe
2 -- tmpfs, с -pipe
3 -- без tmpfs, c -pipe
Потом я сменил -О3 на -О2:
1 -- tmpfs, -O2 -pipe
2 -- tmpfs, -O2, без -pipe
Делайте выводы, господа)
vanitas vanitatum et omnia vanitas
alius написал(а): Делайте
А ск-ко у вас ядер и в ск-ко потоков происходит сборка?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Intel Core i330m, 2 ядра
Intel Core i330m, 2 ядра физических но 4 виртуальных. MAKEOPTS="-j4"
Может протестируете у себя? Чтоб картина была более полной.
vanitas vanitatum et omnia vanitas
Желательно тестировать, на
Желательно тестировать, на чем, то более крупном c временем сборки минут 10-20-30
alius написал(а): -pipe –
Всегда думал, что -pipe относится к самим бинарникам, а не к компиляции. Даже если это не так - "нецелесообразен" не означает "вреден". Поменьше верь тому, что мегабакс там пишет.
-pipe есть (ставил из
-pipe есть (ставил из английского howto для atom n270), ccashe нет (думаю не нужен).
Просмотрел ещё раз Вашу
Просмотрел ещё раз Вашу статистику, заметил большой разброс по времени. Попробуйте скомпилировать пакет в tmpfs и сразу после этого без tmpfs, не запуская других задач. Я для удобного отключения tmpfs пользуюсь командой:
vanitas vanitatum et omnia vanitas
Tue Mar 1 22:51:58 2011 >>>
1. c tmpfs
2. без ...
А я бы из всего этого сделал
А я бы из всего этого сделал бы вывод такой: гоняемся за копейками, а теряем рубли ..... другое дело что в процессе "погони" хоть "согрелись" тем самым уменьшив "лишнюю" нагрузку на носитель.....
ЗЫ в пакетах где выйгрышь в несколько секунд - результат смешон до слез, а с такими пакетом как ООО : из области часом больше - часом меньше....да еще и разово=)
Поэтому я для себя первичным критерием сделал снять лишнюю" нагрузку на носитель..
知る者は言わず言う者は知らず
"Бабло, побеждает даже зло"
Цитата: Поэтому я для себя
Совершенно верно и правильно. На время компиляции существенно не влияет вынос каталога для сборки в tmpfs.
Я еще сделал
Я еще сделал так:
/var/lib/portage/world
Очень много времени экономит.
А tmpfs пусть остается как есть.
torovich написал(а): Всем
Ускорение компиляции заметно только на тяжёлых пакетах. Это зелёным по чёрному написано в хэндбуке.