CCACHE ile derleme yapmak | BSD

İnsan BSD'ye geçince her gün garip bir şey öğreniyor, onlardan biride bu CCACHE denilen olaydır.
Nedir bu diye sorarsanız? ...

ccache Nedir?
ccache, bir derleyici önbelleği sistemidir. Önceki derlemelerin sonuçlarını saklayarak ve aynı derlemelerde bunlardan yararlanarak derleme işlemini hızlandırır. Desteklenen diller arasında C, C++, Objective-C ve Objective-C++ bulunmaktadır.
Devamı için tık'layınız >>>


Kısaca iyi bir şeydir diyebiliriz :D
Gerçi 2. derlemelerde daha çok işe yarayacağınıda hesap edersek, (ilk derlemede ccache devreye girmez) gerekte olmayabilir ama Örn. FF gibi bir uygulamaya sürekli güncelleniyorsa ve güncel kullanmayı da seviyorsanız o zaman CCACHE işe yarayacaktır elbet.
Zira FF gibi bir paketin derlenmesi normalde 1 saat civarında oluyor ve her güncellemede 1 saat beklemek sizi iyice depresif biri yapabilir. :D

Neyse işte tamda bu gibi depresif durumları önlemek için birileri bir şeyler yapalım, yapalım da ne yapalım demişler ve CCACHE ortaya çıkmış.
Sonuçta geliştiriciler/paketçilerde/ bir insan ve onlarıda düşünmek lazım.
Hazır paketi şakırt diye kuran $USER'ler helede bunu beğenmezlerse, geliştiricinin/paketçinin ben bunu niye derliyorum vaktime emeğime yazık, al $USER sen kendin derle dese, o $USER'in yüz ifadesini görmeye neler vermezdim neler :D

Özetle derleme demek mutfağa yakın olmak demektir. (tar.gz'nin çekim gücü)
Yemeği beğenmeyen $USER'de ağzının tadı yok demektir. (mennuniyetsiz müşteri)

Beğenmiyorsan kendin yapacaksın, sanki para verdin!! :hayır:

Her neyse küçük şeylerden büyük mutluluklar çıkaranlara selam olsun diyerek, CCACHE olayına girişelim.

Önce kuralım.
# cd /usr/ports/devel/ccache ; make install clean
# pkg_add -r ccache

make.conf'umuzu ayarlayalım.
.if ${.CURDIR:M*/ports*}
.if exists(/usr/local/libexec/ccache/world/cc) && !defined(NO_CCACHE)
CC=/usr/local/libexec/ccache/world/cc
CXX=/usr/local/libexec/ccache/world/c++
.endif
NO_CCACHE=yes
.........
.........
.........
.........
.endif


nokta nokta (.......) olan yerlere Cflags ve diğer parametrelerinizi girebilirsiniz.
Tabii bu Cflags değerlerini önceden bilip girmeniz gerek.

Devam ediyoruz ~/.cshrc 'e ekliyoruz
# set ccache varibles
setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
setenv CCACHE_DIR /var/tmp/ccache
setenv CCACHE_LOGFILE /var/log/ccache.log

# set ccache temp size to 512MB (default 1GB)
if ( -x /usr/local/bin/ccache ) then
/usr/local/bin/ccache -M 512m > /dev/null
endif

CCACHE_DIR yolunu istediğiniz bir yeride gösterebilirsiniz, hatta depo dizininiz varsa orayada alabilirsiniz.
CCACHE boyutunuda (512m) büyük tutabilirsiniz, 2GB, 4GB, gibi

Ve sisteme RESTART atın.

Kontrolleri ccache -s ile yapabiliriz.

%ccache -s
cache directory /mnt/ada1s2/cache/ccache
cache hit (direct) 860
cache hit (preprocessed) 18
cache miss 872
called for link 1070
called for preprocessing 18
compile failed 14
preprocessor error 40
bad compiler arguments 4
autoconf compile/link 232
no input file 30
files in cache 2606
cache size 27.6 Mbytes
max cache size 4.0 Gbytes


Şimdide farka bakalım, gerçi çok fazla deneme şansım olmadı ama xarchiver ve vlc farkları önce ve sonrasıyla aşağıda.

xarchiver
39.010u 20.932s 0:54.30 110.3% 3902+3740k 10+3566io 12pf+0w
13.154u 16.252s 0:32.80 89.6% 440+2137k 2+1336io 0pf+0w

vlc
890.933u 273.636s 17:30.91 110.8% 5409+4003k 8794+50765io 1613pf+24w
186.194u 208.169s 7:23.58 88.9% 573+2169k 3619+18476io 181pf+0w


İlişkili konu; Ports kullanımı | BSD

Yaralanılan kaynaklar;
http://forums.freebsd.org/showthread.php?t=174
http://anilozbek.blogspot.com/2011/04/ccache.html
http://www.gentoo.org/doc/tr/handbook/handbook-x86.xml?part=2&chap=3

2 yorum:

  1. nokta nokta (.......) olan yerlere Cflags ve diğer parametrelerinizi girebilirsiniz.
    Tabii bu Cflags değerlerini önceden bilip girmeniz gerek.


    onu nerden bulacağız...

    YanıtlaSil
  2. Cflags ayarı buradan işlemciye göre parametreleri /etc/make.conf dosyasına eklenerek oluyor.
    Dolayısıyla önce işlemcinin özelliklerini bilmek lazım.

    Ama bu CCACHE olayını yeni başlayanlar için tavsiye etmem zira karışıktır, hatta bende kullanmıyorum artık.

    YanıtlaSil

2010 - 2022 Beastie BSD Türkiye