CCACHE ile derleme yapmak | BSD

Başlatan Felâsife, 18 Kasım 2011 - 16:38:50

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Felâsife

İnsan BSD'ye geçince her gün garip bir şey öğreniyor, onlardan biride bu CCACHE denilen olaydır.
Nedir bu diye sorarsanız?
Alıntı Yapccache 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!!

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
veya
# 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

Yararlanı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
Maceraya hazır mısın!  Bir BSD almaz mısın?

if

Eline sağlık @Felâsife. Forumumuz aynı zamanda bir BDS kaynağı da olacak gibi:)

Felâsife

#2
Rica ederim, BSD gibi bir dağıtımın da 'reklam'a ihtiyacı var sonuçta, bildiklerimizi öğrendiklerimizi aktarıyoruz bakalım. :)


Düzeltme; kaynak -> 'reklam'
Maceraya hazır mısın!  Bir BSD almaz mısın?