Доброго времени суток!
1. вопрсо относительно ccache. На gentoo wiki, как и на фоумах читал и уяснил, что ccache требуется и полезен лишь тогда, когда надо один и тот же пакет, одной и той же версии, несколько раз с различными флагами компилировать. А если обновлять пакет, то ccache использован не будет.
На днях на ЛОРе встретил фразу о том, что если при обновлении пакета изменилась лишь малая его часть, то при компиляции с ccache, оставшаяся неизменной часть будет взята из ccache, и не будет заново перекомпилироваться.
Развейте пожайлуйста мои сомнения.
2. Использую tmpfs для /var/tmp/portage следуя gentoo wiki:
http://en.gentoo-wiki.com/wiki/Portage_TMPDIR_on_tmpfs
Заметен прирост скорости компиляции и установки пакетов.
3. Сейчас задумался о подключении ccache. Посему встает вопрос: будут ли конфликтовать ccache и portage_tmp_on_tmpfs ??
В том смысле, что куски кода будут находиться в оперативной памяти, после чего при размонтировании исчезнут.
Так вот, будет ли система брать файлы из ccache при использовании tmpfs? И будет ли туда писать?
ccache, tmpfs и их связка
Модератор: /dev/random
-
Dreamer77
- Сообщения: 202
- ОС: Debian, openSUSE, Mac OS X
ccache, tmpfs и их связка
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: ccache, tmpfs и их связка
Dreamer77
Всё просто, ccache работает примерно так:
1. Строится хеш файла, который базируется на:
- размере файла
- его полном пути
- его содержимом
- времени модификации
- опциях компилятора
2. Если в кеше для данного хеша найден файл, то используется его содержимое (вывод компилятора), если не найден - файл отдаётся реальному компилятору
У ccache есть два режима и куча опций. Один (включен по умолчанию) - создаёт хеш на основе содержимого файла и его аттрибутов. Второй - создаёт хеш на основе выводе C/C++-препроцессора. Понятное дело - второй чуть медленнее. Опции указывают что именно хешировать (путь, размер и т.д., можно, например, отключить включение в расчёт хеша путь файла).
Всё просто, ccache работает примерно так:
1. Строится хеш файла, который базируется на:
- размере файла
- его полном пути
- его содержимом
- времени модификации
- опциях компилятора
2. Если в кеше для данного хеша найден файл, то используется его содержимое (вывод компилятора), если не найден - файл отдаётся реальному компилятору
У ccache есть два режима и куча опций. Один (включен по умолчанию) - создаёт хеш на основе содержимого файла и его аттрибутов. Второй - создаёт хеш на основе выводе C/C++-препроцессора. Понятное дело - второй чуть медленнее. Опции указывают что именно хешировать (путь, размер и т.д., можно, например, отключить включение в расчёт хеша путь файла).
ccache и tmpfs - это перпендикулятные вещи.
ccache работает с файлами, а не с пакетами. Он прост, как пробка.
-
Dreamer77
- Сообщения: 202
- ОС: Debian, openSUSE, Mac OS X
Re: ccache, tmpfs и их связка
Спасибо за быстрый ответ!
В целом понял как cache работает.
Правильно ли мыслю?
пусть имеется пакет kate-4.7.4, состоящий из пары сотен файлов.
запускаем компиляцию. ccache обрабатывает исходные файлы и составляет по ним хеш
после чего скомпилированные файлы кладутся в хранилище и ждут своего часа.
установка завершена
вышла новая версия kate-4.8.0, и из пары сотен файлов изменения коснулись только штук 5.
запускаем компиляцию. ccache проверяет новый файлы, находит что 195 файлов он уже знает
подставляются скомплированные файлы, идет компиляция оставшихся 5 файлов.
установка завершается.
В целом понял как cache работает.
Правильно ли мыслю?
пусть имеется пакет kate-4.7.4, состоящий из пары сотен файлов.
запускаем компиляцию. ccache обрабатывает исходные файлы и составляет по ним хеш
после чего скомпилированные файлы кладутся в хранилище и ждут своего часа.
установка завершена
вышла новая версия kate-4.8.0, и из пары сотен файлов изменения коснулись только штук 5.
запускаем компиляцию. ccache проверяет новый файлы, находит что 195 файлов он уже знает
подставляются скомплированные файлы, идет компиляция оставшихся 5 файлов.
установка завершается.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: ccache, tmpfs и их связка
Да.
Если выставлена переменая CCACHE_HASHDIR, то два одинаковых файла из разных версий будут считаться разными, так как будут лежать в разных каталогах. Не уверен, что Portage выставляет эту опцию. Опять же - в аргументах gcc могут быть указаны абсолютные пути для файлов, в результате чего командные строки, для файлов из разных версий, будут отличаться. Т.е. нет гарантии, что конкретный файл из конкретного пакета будет взят из кеша, даже если он там есть и актуален.
-
Dreamer77
- Сообщения: 202
- ОС: Debian, openSUSE, Mac OS X
Re: ccache, tmpfs и их связка
про пути к файлу понял. Почитаю подробней об опциях.
Другой вопрос и тоже с ccache связан.
В make.conf стоят флаги -march=native/
При обновлении версии gcc эти флаги с легкостью могут измениться, и в итоге получится не радостная ситуация.
Да и в любом случае, при серьезной смене версии надо всю систему пересобирать. При этом как понимаю использование ccache совсем нежелательно и даже противопоказано.
Другой вопрос и тоже с ccache связан.
В make.conf стоят флаги -march=native/
При обновлении версии gcc эти флаги с легкостью могут измениться, и в итоге получится не радостная ситуация.
Да и в любом случае, при серьезной смене версии надо всю систему пересобирать. При этом как понимаю использование ccache совсем нежелательно и даже противопоказано.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X