Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linux Çekirdeği Stajı - Outreachy

Linux Çekirdeği Stajı - Outreachy

Ebru Akagündüz

December 18, 2015
Tweet

More Decks by Ebru Akagündüz

Other Decks in Programming

Transcript

  1. Hakkımda: • Bilgisayar Mühendisi (2014 mezunu) • Boğaziçi Üniversitesi’nde Sistem

    Yöneticisi • Linux Çekirdeği Katkıcısı • The Awkward Yeti karikatürleri hayranı • Günlük yazıları bu adreste: www.ebruakagunduz.com • İletişim Bilgisi: [email protected]
  2. Kimler Başvurabilir? “The current round of internships is open internationally

    to women (cis and trans), trans men, and genderqueer people. Additionally, it's open to residents and nationals of the United States of any gender who are Black/African American, Hispanic/Latin@, American Indian, Alaska Native, Native Hawaiian, or Pacific Islander. We are planning to expand the program to more participants from underrepresented backgrounds in the future.”
  3. Hangi Projeye Başvurdum & Nasıl Katkı Verdim? • Linux Kernel

    ◦ checkpatch.pl ile kodlama biçmindeki hataları düzeltmek ◦ sparse ile statik kod analizi yapmak ◦ coccinelle ile belirli bir hata için yama şablonu oluşturmak ◦ smatch ile statik kod analizi yapmak ◦ y2038 projesine katkı vermek
  4. Outreachy’nin 9. Döneminde Kabul Edildim • Daha önce iki kez

    başvurdum • Rik van Riel’in danışmanlığında bellek yönetimi ekibiyle çalıştım • Proje: Sistemde THP (Transparent Huge Page) Kullanımını Artırmak
  5. Proje Amacı: • THP (transparent huge page) kullanımını artırmak ◦

    THP nedir? ◦ Yararları nelerdir? ◦ Neden THP kullanımını artırmak istiyoruz? Resmi Sayfası: Khugepaged Swapin Readahead: kernelnewbies.org/OPWRound9 THP özeti: arcangeli_lfc_slide.pdf
  6. Staj Sürecinde Nasıl Çalıştım? • Staj süreci: resmi olarak 3

    ay, tam zamanlı (haftalık 40 saat), uzaktan çalışma • İlk üç hafta: temel kavramları öğrenme & kod okuma • Kalan süreç: kod yazma + öğrenme + test + ilk haftalarda okuduklarını hatırlamaya çalışma
  7. Kod Okuma Evresi: • x86 sistemler için Linux Sayfa Hatası

    İşleyicisi’nin çalışma mantığını anlamaya çalışma -> do_page_fault() fonksiyonunun tam yolunu okuma • khugepaged thread’inin çalışma mantığı • Rik’in sorduğu soruları cevaplama • Proje için önem arz eden noktaları not etme • Takıldığım noktaları irc & eposta yoluyla sorma • Linux Kernel Architecture & Understanding Linux Kernel kitaplarını okuma • Fonksiyon araması yaparken: lxr.free-electrons.com/ident • Fonksiyon çağırma zincirlerini not etme
  8. • Bir süreçte bir yama / bir yama seti hazırlama

    • Yapılması gereken görevin danışman tarafından tanımlanması • Döngü: ◦ Bu görevin neden gerekli olduğunu stajyer anlayana kadar tartışmak ◦ İşin anladığım kadarını yapıp, test edip yama olarak danışmanıma gönderme • Yeni görev varsa ilk satıra git :) Kodlama Evresi:
  9. Test etme: • çoğunlukla printk() kullanarak :| • kendi test

    programlarımı yazma • tracepoint yazma • perf & gdb kullanma • grep, wc, split ile kernel.log’u inceleme • her testten sonra kernel.log’u boşaltma
  10. Upstream’e Yama Gönderme: • Danışmandan onay alan yamayı / yama

    setini Linux Çekirdeğinin ilgili listelerine gönderme ◦ ./scripts/get_maintainer.pl -f değişiklik_yapılan_dosya • Döngü: ◦ Geliştiricilerden gelen geri bildirimlere göre aynı yamanın yeni versiyonu oluşturup danışmana gönderme ◦ Danışman onayladığında yeni versiyonu çekirdek listelerine gönderme
  11. Bu Süreçte Neler Öğrendim? • khugepaged’in kısmen çalışma mantığı •

    kernel panic & oops mesajlarını inceleme • Test sonuçlarını raporlama • Upstream’e yama gönderme • Git kullanımı • Mutt kullanımı • Linux Çekirdeği kodlama standartları • Farklı zaman bölgelerinde çalışmaya çalışma :| • Çekirdek geliştiricileriyle konuşmaktan çekinmeme :)
  12. Katkılarım Neler? • Sadece okunur sayfaları THP’ye dahil etme •

    Sıfır içerikli sayfaları THP’ye dahil etme • Swapin Readahead yaparak swap sayfalarını THP’ye dahil etme • Belgeleme • Khugepaged için tracepoint
  13. Outreachy’nin Bana Kazandırdıkları? • 5,500$ :) • Bellek yönetimi ekibiyle

    çalışmak O_O • Örnek alınası harika insanlar tanımak /* bu bilmediğim çok fazla şeyden haberdar olmak demek */ • Yeni başlayan birinin elinden tutmaya hevesli olan insanlarla tanışmak • Linux Çekirdeğine eklenen özellikler arasında yamalarımın yer alması • Uzaktan çalışma deneyimi • LinuxCon’a tam burslu katılarak sunum yapma imkanı
  14. Size ne tavsiye edebilirim? • Başvuru süreci birçok şey öğretiyor,

    kabul edilmeseniz bile o süreçte bir sürü yama kabul ettirmiş olursunuz • Birden fazla kez başvurmaktan çekinmeyin • Başvuru sürecinde danışmana projeye ne kadar ilgili olduğumuzu göstermek önemli. Örn. proje sayfasında katkı vermek için alanlar yazmıyorsa projenin bugzillasından basit birkaç şey üzerinde uğraşıp bunun üzerine konuşmak çok daha etkili
  15. Faydalı Kaynaklar: • Understanding Linux Kernel kitabı • Linux Kernel

    Architecture kitabı • Outreachy resmi sayfası: gnome.org/outreachy • Coccinelle resmi sayfası: coccinelle.lip6.fr • kernelnewbies sayfası: kernelnewbies.org • Stajyerlerin yazılarının toplandığı gezegen: planeteria.info/outreach • Yeni başlayanlar için Linux Çekirdeğine katkı verme yolları: linux. com/beginners_guide