Linux Performansını Arttırmak. S.Çağlar Onur <caglar@pardus.org.tr>



Benzer belgeler
Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Nasıl Pardus Geliştiricisi Olunur?

Kap Temelli Özgür Sanallaştırma Çözümleri

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

Bölüm 8: Ana Bellek 8.1

Ders - 1. BİL 221 Bilgisayar Yapısı GİRİŞ. Ders Hakkında. Ders İzlencesi

C# nedir,.net Framework nedir?

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı

Bilgisayar Sistemlerine Genel Bakış

İşletim Sistemlerine Giriş

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

İçerik. Çapraz geliştirme yöntemleri ve araçları Önyükleyiciler C kütüphaneleri Linux Çekirdeği Linux sürücüleri

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Linux Assembly Programlamaya Giriş

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

İşletim Sistemi. BTEP205 - İşletim Sistemleri

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

Bilgisayarların Gelişimi

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bilgisayarım My Computer

BM-311 Bilgisayar Mimarisi

Bilgisayarım My Computer. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme

RRDTool Kullanımı ve ULAKNET İstatistikleri. Çağlar GÜLÇEHRE TÜBİTAK ULAKBİM-ATB

İŞLETİM SİSTEMLERİ. (Operating Systems)

Akademik Dünyada Özgür Yazılım. Akademik Dünyada. Onur Tolga Şehitoğlu

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

PROGRAMLAMAYA GİRİŞ DERS 2

Algoritma ve Akış Diyagramları

Yrd. Doç. Dr. A. Burak İNNER

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bilgisayar Donanımı. Temel Birimler ve Çevre Birimler. Öğr.Gör.Günay TEMÜR / KAYNAŞLI MESLEK YÜKSEOKULU

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

İŞ İSTASYONU SEÇİM REHBERİ

Linux e Giriş ve Dağıtımlar

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

1.1. Yazılım Geliştirme Süreci

Background (Arka Plan)

Seagull ile Diameter Mesajları Üretme

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yrd.Doç.Dr. Celal Murat KANDEMİR

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Üst Düzey Programlama

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

Açık Kaynak Kodlu Yazılım

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BELLEKLER. Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır.

FreeBSD 5.X Serisi. Ömer Faruk Şen EnderUNIX Çekirdek Takımı Üyesi

Linux Dosya ve Dizin Yapısı

İşletim Sistemlerine Giriş

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları

Bilgisayar İşletim Sistemleri BLG 312

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

NB Macro Kullanımı Hakkında Genel Bilgiler

Linux/Unix Sistem Yönetimi Prosedürleri - 1

BM-311 Bilgisayar Mimarisi

Bilişim Teknolojilerine Giriş

Kaspersky Open Space Security: Release 2. İşletmeniz için birinci sınıf bir BT güvenliği çözümü

EFe Event Management System

Linux'ta Kabuk ve Kabuk Programlama

Performans. Mikroişlemciler ve Mikrobilgisayarlar

BİT in Temel Bileşenleri (Yazılım-1)

Pardus 2013 te Metin Editörleri

Multicore/Multithread Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Bilgisayar Mimarisi Nedir?

Bahar. BM 211 Programlama Dilleri 3 1

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

D Duplex : Alıcı + Verici Çalışma Debouching : DMA : Direct Memory Access Data-Bus : Data Veri Yolu Data Flow : Veri Akışı Data Processing : Veri

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

ANET YAZILIM LOG YÖNETİMİ. Karşılaştırma Tablosu ANET YAZILIM

İşlem Yönetimi (Process Management)

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

MPLAB IDE v7.60 PROGRAMI KULLANIMI

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

A. Murat Eren. VI. Linux ve Özgür Yazılım Şenliği

Zararlı Yazılım Analizi

BİLGİSAYAR MİMARİSİ. Komut Seti Mimarisi. Özer Çelik Matematik-Bilgisayar Bölümü

Ünite-3 Bilgisayar Yazılımı.

Bilgisayar Mimarisi ve Organizasyonu Giriş

Acarix CD-DVD/Ağ üzerinden çalışan GNU/Linux Dağıtımı

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

Bilgisayar İşletim Sistemleri BLG 312

apt-get update apt-get upgrade aptitude install autoconf automake binutils cpp gcc linux-headers-$(uname -r) make psmisc

Transkript:

Linux Performansını Arttırmak S.Çağlar Onur <caglar@pardus.org.tr>

Linux Performansını Arttırmak Performans neden önemlidir? Performansı arttırmak: Hızlı çekirdek Hızlı sistem açılışı Hızlı uygulama açılışı Performanslı kod yazmak Performans araçları

Performans Neden Önemlidir? Herkesin süper, hızlı, son model bilgisayarı yok! Uzun süre açılmayan her uygulama/sistem kullanıcının canını sıkar! Aynı iş daha az kaynak ile yapılabilir! Herkesin çok zamanı yok!

Performansı Arttırmak

Hızlı Çekirdek Çekirdek mesajlarının konsola basılması zaman alıyor, Hele framebuffer kullanılıyorsa, Çekirdeğe açılırken sessiz ol demek; root=dev/hda1... quiet Sistem açılış zamanını %30 ile %50 arası hızlandırıyor!

Hızlı Çekirdek Her açılışta çekirdek gecikme döngüsünü hesaplar ~25 jiffy (1/saat hızı) sürer dmesg grep BogoMIPS Calibrating delay using timer specific routine.. 3464.74 BogoMIPS (lpj=1732372) Çekirdeğe lpj değerini vermek bu süreyi kazandırır

Hızlı Çekirdek IDE disklerin tanınması ~5sn. sürer, Bu sürenin önemli bir kısmı msleep(50) ler ile geçer (drivers/ide/ide-probe.c), Bu süre ufak bir çekirdek yaması ile; ~3 sn. kısaltılabilir

Hızlı Çekirdek Farklı ihtiyaçlar için farklı I/O scheduler (elevator); noop: Basit FIFO, her I/O için minimum CPU kullanımı deadline: 5 adet I/O queue arasında round robin anticipatory: deadline + kontrol edilen gecikme (6 ms.) cfq: Process başına I/O queue, mevcut tüm I/O bantgenişliğini eşit dağıtır.

Hızlı Sistem Açılışı

Hızlı Sistem Açılışı Sistem açılışları yavaş, En büyük sebebi ihtiyaç duyulmayan geriye uyumluluk için yazılan kötü kod, Bir diğer sebebi yazılan kötü kod, Basit bir süreci karışıklaştırma sorunu, Kabuk kullanımı, paralel çalıştıramama, sıraya koyamama

Hızlı Sistem Açılışı

Hızlı Sistem Açılışı

Hızlı Uygulama Açılışı

Hızlı Uygulama Açılışı Kullanılabilirlik testlerine göre kullanıcı uygulamayı çalıştırdıktan sonra ~0.3 0.5 sn arasında pencereyi görmek istiyor Uygulama açılma zamanının bir kısmı linker (ld.so) tarafından harcanıyor Çoğunlukla çalışma zamanı link etme işlemi en uzun süren süreç

Hızlı Uygulama Açılışı Örnek bir KD uygulamasında; LD: 0.65 sn. Qt: 0.13 sn. KDE: 0.11 sn. KWrite: 0.48 sn. Pencerenin gelmesi toplam 1.37 sn. sürüyor (Sayılar güncel olmayabilir)

Hızlı Uygulama Açılışı Sorunun büyük kısmı ld'de; Symbol arama süreci uzun sürüyor (özellikle C++ uygulamalarında) Relocation (ikili dosyanın içindeki çağrıların dışardan çözülen kütüphane çağrılarını gösterme süreci) işlemi bellek tüketici, zaman alıcı Lazy Binding (gerektiğinde çöz) C uygulamarı için mükemmele yakın çalışırken C++ için yavaş

Hızlı Uygulama Açılışı Prelink Tüm sistemi tara ve tüm uygulama/kütüphanelere belirlenmiş adres alanları ver Her kütüphane/uygulama değiştiğinde bu değerler yeniden hesaplanmalı Preload Uygulamanın ihtiyaç duyacağı kütüphaneleri uygulama açılmadan çok önce belleğe yükle

Hızlı Uygulama Açılışı -Bdirect Sembol arama sürecini yok et/azalt! -dynsort Dinamik link bölümünü sırala, link işlemi! sırasında önbellek kullanımını azalt -hashvals Önceden hesaplanmış hashleri sakla, ihtiyaç olunca buraya bak! (Micheal Meeks)

Performanslı Kod Yazmak

Performanslı Kod Yazmak Kod yazma sırasında performans; C kodları için likely, unlikely, inline kullanımı, C++ için vtablelara dikkat!, Class Base: 10 virtual fonksiyona sahip Class Derive (Base): 1 virtual fonksiyonu override ediyor base = 10 fonk. = 10 relocation derive = 20 fonk. = 20 relocation liboil ve benzeri çözümler BoehmGC

Performanslı Kod Yazmak Derleme sırasında performans; Static linkleme Shared linkleme GCC optimizasyonları (mtune, -O2-0s v.s) Binutils ile as-needed GCC 4.x ile visibility Gereksiz sembolleri strip etmek

Performanslı Kod Yazmak Derlenmeyen diller için performans; Python!!! JIT derleyicileri (Python ve Pysco) Az karışıklık, az kod, yüksek soyutlama GC (çöp toplayıcılar) Optimize edilmiş veya derlenmiş hallerinin çalıştırılması (pyc, pyo)

Performans Araçları

Performans Araçları Basit araçlar; ps top Çalışan süreçlerle ilgili bilgi verir vmstat Çalışan süreçlerle ilgili gerçek zamanlı bilgi verir... Bellek, sayfalama, I/Ove CPU aktivitesi ile ilgili bilgi verir

Performans Araçları Uygulama özel araçları; strace ltrace ld.so oprofile valgrind / cachegrind

strace Çekirdeğe yapılan sistem çağrılarını gösterir $ strace -c ls Ağ.desktop build-from-tarballs.sh eclipse.desktop Home.desktop sandbox svn sysinfo.desktop trash.desktop % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 52.73 0.000029 1 48 21 open 47.27 0.000026 1 41 mmap2... 0.00 0.000000 0 12 read ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000055 201 30 total

ltrace strace ile aynı konsepte sahiptir ama kütüphane çağrılarını gösterir $ ltrace -c ls Ağ.desktop build-from-tarballs.sh eclipse.desktop Home.desktop sandbox svn sysinfo.desktop trash.desktop % time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 23.40 0.002014 2014 1 qsort 19.33 0.001664 1664 1 setlocale... 0.17 0.000015 15 1 textdomain ------ ----------- ----------- --------- -------------------- 100.00 0.008608 313 total

ld.so link süreçlerini gösterebilir! env LD_DEBUG=statistics konqueror 6062: runtime linker statistics: 6062: total startup time in dynamic loader: 65974640 clock cycles 6062: time needed for relocation: 61836996 clock cycles (93.7%) 6062: number of relocations: 24547 6062: number of relocations from cache: 63115 6062: number of relative relocations: 37780 6062: time needed to load objects: 3813029 clock cycles (5.7%) 6062: runtime linker statistics: 6062: final number of relocations: 37804 6062: final number of relocations from cache: 75994

ld.so LD_DEBUG=all tüm sembol ismi çözme sürecini gösterir (LD_DEBUG_OUTPUT) Örneğin konqueror için bu işlemi dosyaya yazdırınca; env LD_DEBUG=all LD_DEBUG_OUTPUT=konqi konqueror $ ll -h konqi.6065 -rw-r--r-- 1 caglar users 33M May 11 11:54 konqi.6065

OProfile Sisteminizin profilcisi, Düşük performans farkı ile çalışır, İşlemcilerden gelen özel performans olaylarını(performance counter events) dinler, Ayrıntılı rapor, özet, istatistik bilgi ve grafik üretebilir, Grafik arabirimi ile kolayca kullanılabilir

OProfile # opcontrol --vmlinux=/usr/src/linux/arch/i386/boot/compressed/vmlinux # opcontrol --start Using default event: CPU_CLK_UNHALTED:100000:0:1:1 Using 2.6+ OProfile kernel interface. Reading module info. Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.

OProfile zangetsu ~ # opreport CPU: PIII, speed 800 MHz (estimated) Counted CPU_CLK_UNHALTED events (clocks processor is not halted) with a unit mask of 0x00 (No unit mask) count 100000 CPU_CLK_UNHALT... samples % ------------------ 710691 30.3535 vmlinux 283530 12.1095 libfb.so 196727 8.4022 libc-2.3.5.so 125992 5.3811 libqt-mt.so.3.3.5 102543 4.3796 Xorg 85589 3.6555 mono

Valgrind Uygulamanın bellek kullanımını, kaçakları (memory leak) gösterir/bulunmasına yardımcı olur Çok gelişmiş bir uygulamadır Cachegrind KDE arayüzü Kcachegrind ile uygulama profilleme işlemi grafik arabirim ile yapılabilir, ayrıntılı rapor, çizelge, çizim elde edilebilir

Diğer Performans Arttırımları Suspend to Disk/RAM Hızlı açılış Cpufreq kexec Az pil tüketimi Hızlı reboot Hızlı dosya sistemi Hızlı I/O

Kaynaklar Sunum: Kitap: Fosdem 2005, Embedded Linux Optimization sunumu, Optimizing Linux Performance, Philip G. Ezolt Döküman: Blog: KDE Init, Dirk Muller Optimized Code, Robert Love

Linux Performansını Arttırmak Teşekkürler!...Sorular...