My Opera is closing 1st of March

Felâsife

Bir BSD almaz mıydın?

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 bigsmile
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. bigsmile

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 bigsmile

Ö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

Sysinfo ile Sistem Bilgileri | BSDPC-BSD ve Blekko

Comments

erci buzcokomoko Monday, June 11, 2012 5:38:50 PM

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


onu nerden bulacağız...

Felâsifefelasife Tuesday, June 12, 2012 6:36:45 AM

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.

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies