tmpfs /var/tmp/portage

Всем привет!
Решил ускорить на сврём нетбуке компиляцию по 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 написал(а): Пардон, а

willy написал(а):
Пардон, а при чём тут tmpfs и время компейляции?

присоединяюсь! тоже не понимаю этого ))

даже при стандартной настройке, все i/o кешируются в памяти, что равносильно tmpfs ;) я использую tmpfs просто для уменьшения i/o, так сказать для более долгой жизни винта )) особенно это полезно тем, у кого ssd, имхо... а для скорости лучше использовать distcc или ccache ;)

Theli написал:...

Theli написал(а):
все i/o кешируются в памяти

Во-первых, "откуда дровишки"? :-) оно IMHO?
Во-вторых, при компиляции (точнее - при трансляции) много пишется в объектные файлы, по большому счёту являющимися временными, соотв., располагая их в tmpfs, реальных дисковых операций производится значительно меньше. Это ощутимо даже "органолептически" (по светодиоду), невооружённым глазом наблюдая активность дисковой подсистемы - разницу не заметить просто невозможно

Цитата:
для скорости лучше использовать distcc или ccache

ccache может помочь только при повторной компиляции или (иногда) при обновлении в виде патча. При обычном обновлении из нового тарболла (и тем более при первичной инсталляции), ccache не только не помогает, но даже мешает, увеличивая кол-во дисковых операций для сохранения результатов (которые с высокой степенью вероятности никогда не понадобятся)

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler

Spoiler написал(а):
Во-первых, "откуда дровишки"? :-) оно IMHO?

ну, вообще-то в линуксе используется отложенная запись, и в зависимости от выбора ФС получается более или менее агрессивное кеширование данных... правильнее даже будет сказать, что кешируются не файлы, а блоки данных...
а имхо было про ssd ;)

Spoiler написал(а):
Во-вторых, при компиляции (точнее - при трансляции) много пишется в объектные файлы, по большому счёту являющимися временными, соотв., располагая их в tmpfs, реальных дисковых операций производится значительно меньше. Это ощутимо даже "органолептически" (по светодиоду), невооружённым глазом наблюдая активность дисковой подсистемы - разницу не заметить просто невозможно

если оперативы достаточно и параметр swapiness приближен к нулю, то, если кешированный файл не был выдавлен из оперативы, то реального дискового обращения и не произойдет... лампочка не моргнет...

Spoiler написал(а):
ccache может помочь только при повторной компиляции или (иногда) при обновлении в виде патча. При обычном обновлении из нового тарболла (и тем более при первичной инсталляции), ccache не только не помогает, но даже мешает, увеличивая кол-во дисковых операций для сохранения результатов (которые с высокой степенью вероятности никогда не понадобятся)

я в курсе... каждой программе свой частный случай для применения ;)

Theli написал(а): Spoiler

Theli написал(а):
Spoiler написал(а):
Во-вторых, при компиляции (точнее - при трансляции) много пишется в объектные файлы, по большому счёту являющимися временными, соотв., располагая их в tmpfs, реальных дисковых операций производится значительно меньше. Это ощутимо даже "органолептически" (по светодиоду), невооружённым глазом наблюдая активность дисковой подсистемы - разницу не заметить просто невозможно

если оперативы достаточно и параметр swapiness приближен к нулю, то, если кешированный файл не был выдавлен из оперативы, то реального дискового обращения и не произойдет... лампочка не моргнет...

Это теоритически, а на практике, при 8 гигах оперативы ещё как моргала, до переноса tmpfs в shm.
Что до swapiness, то он с довольно давно автоматически меняется ядром, да и памяти оперативной у ТС аж цельный гигабайт...

Theli написал(а): вообще-то в

Theli написал(а):
вообще-то в линуксе используется отложенная запись, и в зависимости от выбора ФС получается более или менее агрессивное кеширование данных... правильнее даже будет сказать, что кешируются не файлы, а блоки данных

То, о чём вы говорите - не кэширование данных, а кэширование команд I/O, это работа планировщика,.никоим образом не уменьшающая кол-во дисковых операций, а лишь группирующая и распределяющая их во времени. К сож., при этом даже в случае, когда по мнению GCC запись уже не актуальна, она всё равно будет выполнена, поск-ку команда контроллеру была в своё время выдана и закэширована

Цитата:
если оперативы достаточно и параметр swapiness приближен к нулю, то, если кешированный файл не был выдавлен из оперативы, то реального дискового обращения и не произойдет

Шалите. Так произойдёт как раз в том случае, если, как вы называете, "реальное дисковое обращение" обращается к tmpfs, поск-ку в памяти приложения (конкретно - GCC) происходит манипуляция "сырыми данными" во внутреннем представлении, а все результаты этих манипуляций - это и есть объектные файлы, в обязательном порядке выводятся наружу (на диск или tmpfs) для того, чтобы их можно было использовать в своих произвольных целях тому, кто дал задание на сборку. При чём выводятся не моментально в готовом виде, а открываются на последовательную запись и обращений к ним множество (что также действительно и для лога сборки)... Это уже portage всё подчищает - ему оно не нужно, а если будете компилить вручную - увидите, в этом случае достаточно легко помониторить...

Цитата:
каждой программе свой частный случай для применения

Дык конкретно для ccache, который вы рекомендуете для ускорения, этот случай ну ооочень частный, в отличие от значительно более массового случая, когда он просто вреден...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler написал(а): конкретно

Spoiler написал(а):
конкретно для ccache, который вы рекомендуете для ускорения

стоп-стоп-стоп!!! если я его назвал, это еще не значит, что я его рекомендую!!!

Спасибо за ликбез. 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 Файловая

Сделал так:

# df
Файловая система     1K-блоков      Исп  Доступно  Исп% смонтирована на
rootfs                 2063504    494884   1463800  26% /
/dev/root              2063504    494884   1463800  26% /
rc-svcdir                 1024       112       912  11% /lib/rc/init.d
udev                     10240       264      9976   3% /dev
shm                     510352         0    510352   0% /dev/shm
/dev/sda5            103210940  83060880  14907252  85% /home
/dev/sda6             20641788   8016488  11576660  41% /usr
/dev/sda7             18577596   1578416  16055364   9% /var
tmpfs                   510352         0    510352   0% /var/tmp
tmpfs                   510352       108    510244   1% /tmp

Ядро компилится пол часа. Думаю для 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 – передавать

-pipe – передавать промежуточные данные по конвейеру (в оперативной памяти,а не через винт)

http://optimization.hardlinux.ru/?page_id=34

без pipe в tmpfs быстрее будет, если флаги не -O3…

http://optimization.hardlinux.ru/
Насколько я понимаю, -pipe убыстряет копиляцию на харде, сохраняя промежуточные результаты в оперативке. При tmpfs компиляция и так происходит в оперативке, так что -pipe, имхо, нецелесообразен. Поправьте меня, если я ошибаюсь.

vanitas vanitatum et omnia vanitas

Это самое подробное

Это самое подробное обоснование(по вашей ссылке):

если в памяти, лучше отключить, лишние операции по копированию, лишняя память, без pipe в tmpfs быстрее будет, если флаги не -O3…

но мне оно ничего не объясняет. т.к.не могу сказать, что заню досконально, что и как происходит, то вопрос остается открытым.

однако.. Fri Feb 25 10:44:57

однако..

Fri Feb 25 10:44:57 2011 >>> gnome-base/nautilus-2.32.2.1
       merge time: 1 minute and 51 seconds.

     Fri Feb 25 10:47:32 2011 >>> gnome-base/nautilus-2.32.2.1
       merge time: 1 minute and 42 seconds.

     Fri Feb 25 10:50:43 2011 >>> gnome-base/nautilus-2.32.2.1
       merge time: 1 minute and 43 seconds.

1 -- tmpfs, без -pipe
2 -- tmpfs, с -pipe
3 -- без tmpfs, c -pipe

Потом я сменил -О3 на -О2:

Fri Feb 25 11:12:55 2011 >>> gnome-base/nautilus-2.32.2.1
       merge time: 1 minute and 52 seconds.

     Fri Feb 25 11:14:48 2011 >>> gnome-base/nautilus-2.32.2.1
       merge time: 1 minute and 40 seconds.

1 -- tmpfs, -O2 -pipe
2 -- tmpfs, -O2, без -pipe

Делайте выводы, господа)

vanitas vanitatum et omnia vanitas

alius написал(а): Делайте

alius написал(а):
Делайте выводы

А ск-ко у вас ядер и в ск-ко потоков происходит сборка?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Intel Core i330m, 2 ядра

Intel Core i330m, 2 ядра физических но 4 виртуальных. MAKEOPTS="-j4"
Может протестируете у себя? Чтоб картина была более полной.

vanitas vanitatum et omnia vanitas

Желательно тестировать, на

Желательно тестировать, на чем, то более крупном c временем сборки минут 10-20-30

alius написал(а): -pipe –

alius написал(а):
-pipe – передавать промежуточные данные по конвейеру (в оперативной памяти,а не через винт)

http://optimization.hardlinux.ru/?page_id=34

без pipe в tmpfs быстрее будет, если флаги не -O3…

http://optimization.hardlinux.ru/
Насколько я понимаю, -pipe убыстряет копиляцию на харде, сохраняя промежуточные результаты в оперативке. При tmpfs компиляция и так происходит в оперативке, так что -pipe, имхо, нецелесообразен. Поправьте меня, если я ошибаюсь.

Всегда думал, что -pipe относится к самим бинарникам, а не к компиляции. Даже если это не так - "нецелесообразен" не означает "вреден". Поменьше верь тому, что мегабакс там пишет.

-pipe есть (ставил из

-pipe есть (ставил из английского howto для atom n270), ccashe нет (думаю не нужен).

Просмотрел ещё раз Вашу

Просмотрел ещё раз Вашу статистику, заметил большой разброс по времени. Попробуйте скомпилировать пакет в tmpfs и сразу после этого без tmpfs, не запуская других задач. Я для удобного отключения tmpfs пользуюсь командой:

umount /var/tmp/portage && mount -o bind /home/portage-tmp/ /var/tmp/portage/

vanitas vanitatum et omnia vanitas

Tue Mar 1 22:51:58 2011 >>>

     Tue Mar  1 22:51:58 2011 >>> app-text/xchm-1.18
       merge time: 2 minutes and 5 seconds.

     Tue Mar  1 22:58:49 2011 >>> app-text/xchm-1.18
       merge time: 2 minutes and 3 seconds.

1. c tmpfs
2. без ...

А я бы из всего этого сделал

А я бы из всего этого сделал бы вывод такой: гоняемся за копейками, а теряем рубли ..... другое дело что в процессе "погони" хоть "согрелись" тем самым уменьшив "лишнюю" нагрузку на носитель.....
ЗЫ в пакетах где выйгрышь в несколько секунд - результат смешон до слез, а с такими пакетом как ООО : из области часом больше - часом меньше....да еще и разово=)
Поэтому я для себя первичным критерием сделал снять лишнюю" нагрузку на носитель..

知る者は言わず言う者は知らず
"Бабло, побеждает даже зло"

Цитата: Поэтому я для себя

Цитата:
Поэтому я для себя первичным критерием сделал снять лишнюю" нагрузку на носитель..

Совершенно верно и правильно. На время компиляции существенно не влияет вынос каталога для сборки в tmpfs.

Я еще сделал

Я еще сделал так:
/var/lib/portage/world

...
app-emulation/virtualbox-bin
...
app-office/openoffice-bin
...
www-client/firefox-bin
...

Очень много времени экономит.
А tmpfs пусть остается как есть.

torovich написал(а): Всем

torovich написал(а):
Всем привет!
Вопрос: "Где уменьшение времени компиляции?"

Ускорение компиляции заметно только на тяжёлых пакетах. Это зелёным по чёрному написано в хэндбуке.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".