İSTEMCİ TEMİZLİĞİ: Chromium Embedded Framework'ün (CEF) güncellenmiş hali
LoL İstemcisi'nin performansını ve istikrarını arttırmaya yönelik güncellemelerimizi düzenli olarak paylaşacağımıza söz vermiştik. Bugünkü güncelleme, serimizin dokuzuncu yazısı olacak. (Birinci, ikinci, üçüncü, dördüncü, beşinci, altıncı, yedinci, vesekizinci yazılar burada!)
Özet: LoL İstemcisi'nin merkezindeki CEF (Chromium Embedded Framework) internet tarayıcısını 11.17 Yaması'nda güncelledik ve bellek kullanımında ciddi ölçüde iyileşme, CPU kullanımında azalma ve daha az çökme olduğunu gözlemledik. Böylece istemcinin istikrarını ve performansını iyileştirmek için daha sık güncellemeler planlamaya odaklanabiliriz!
Chromium Embedded Framework'ü (CEF) Güncellemek
İstemci Temizleme Çalışmaları için çok büyük bir an! Yılın başlangıcında, istemcideki Chromium Embedded Framework'ü (CEF) yani LoL İstemcisi'nin merkezindeki internet tarayıcısını 91 sürümüne güncellemenin istemciyi iyileştirmek için yapabileceğimiz en etkili şey olacağını saptamıştık. (Not: Bundan önceki son güncellememiz Kasım 2019'da 74 sürümüneydi...) CEF'i güncellemenin iki farklı faydası var: İlk faydası istikrar ve bellek ve CPU kullanımında anında iyileştirmeler sunması. İkinci faydasıysa yeni özellikler ve araçlar içerdiği için (buna değineceğiz) gelecekte çok sayıda yeni iyileştirme yapmamıza kapı aralaması. Bu nedenler geçen yıl CEF'i güncellemeyi birincil önceliğimiz haline getirdi ve 11.17 Yaması'nda 91 sürümüne geçtiğimizi ve harika sonuçlar elde ettiğimizi duyurmaktan çok mutluyuz!
İstemci Çökmelerinde Azalma
CEF'i güncellemek istemci çökmelerine epey odaklanabilmemizi sağladı ve hedefimiz oyuncuları en çok etkileyen çökme sebeplerine çözümler bulmak. 11.16'nın çıkışından bu yana çökmelerde %61'lik düşüş ve ortalama çökme miktarlarına kıyasla 2021'de şu ana kadar %38'lik bir düşüş görmek bizi sevindiriyor ve bu sayıları daha da azaltmak için çalışıyoruz. Öyle ki 11.18 Yaması'ndan bazı erken veriler çökmelerde yine büyük bir düşüş olduğu yönünde! Her yamada çok sayıda istemci başlatma gördüğümüz için (Riot bölgelerimizde 240 milyonun üstüne çıkabiliyor!) bu çok büyük bir kazanç.
Yama | Çökme Miktarı |
11.14 | 2.349.865 |
11.15* | 3.686.442 |
11.16 | 3.161.145 |
11.17 | 1.214.155 |
(* Miktarın çok olması 11.15'in yama döngüsünün diğerlerinden daha uzun olması.)
Hâlâ görmekte olduğumuz göçmelerin en büyük sebebi, cihazların kullanacak yeterli belleğe sahip olamaması gibi duruyor. Biraz daha derine inince bu göçmelerin neredeyse yarsının Windows 7'yle çalışan eski bilgisayar olduğunu fark ettik. Dünya çapındaki bazı oyuncular (şu an LoL oynamak için gereken minimum işletim sistemi olan) Windows 7'yle çalışan eski bilgisayarda LoL oynasa da bu durumlardan kaç tanesinin bot kullanımından, lisanssız/tarihi dolmuş Windows kopyalarından veya yasal yollarla LoL oynayan oyuncuları temsil etmeyen diğer sebeplerden kaynaklandığını araştıracağız.
Bellek Kullanımında Azalma
İstemcinin tek bir oturumdaki önyüz bellek kullanımında önemli bir düşüş gördük. İstemcinin önyüzü bu bağlamda, oyuncuların etkileşime geçtiği düğmeler, metin alanları ve kısaca görüp üzerine tıklayabileceğiniz her şey anlamına geliyor. Riot bölgelerimizde veriler şöyle:
CEF Sürümü | %20'lik dilimdeki oyuncular (hızlı cihazlar) | %50'lik dilimdeki oyuncular (orta kalitede cihazlar) | %90'lık dilimdeki oyuncular (yavaş cihazlar) |
74 (11.17 Yaması'ndan önce) | 359 MB | 597 MB | 1016 MB |
91 (11.17 Yaması ve sonrası) | 74 MB | 275 MB | 598 MB |
İyileşme | 285 MB (%79) | 322 MB (%54) | 418 MB (%41) |
Bu bağlamda belleği gösterilebilen ilgi miktarı olarak düşünebiliriz. Boşta ne kadar bellek olursa bilgisayarınızın birden fazla görevi gerçekleştirmesi veya o an yaptığı tek göreve odaklanması o kadar kolay olur. Bu da daha az istemci göçmesi ve daha fazla kullanılabilir bellek demek. Böylelikle LCS yayınlarını izlerken bir yandan da dereceli sıraya girebilirsiniz!
CPU Kullanımında Azalma
İstemcinin kullandığı CPU gücünde de azalma gördük. Riot bölgelerimizde veriler şöyle:
CEF Sürümü | %20'lik dilimdeki oyuncular (hızlı cihazlar) | %50'lik dilimdeki oyuncular (orta kalitede cihazlar) | %90'lık dilimdeki oyuncular (yavaş cihazlar) |
74 (11.17 Yaması'ndan önce) | %13 | %34 | %83 |
91 (11.17 Yaması ve sonrası) | %10 | %22 | %72 |
Yüzdelik Düşüş | %23 | %35 | %15 |
Yani bilgisayarınız istemciyi çalıştırmak için eskisi kadar yoğun çalışmayacak ve böylece daha soğuk işlemciler ve daha az güç tüketimi göreceksiniz. Örneğin videolar CPU'dan epey kullanabiliyor ama LoL İstemcisi'nin bunu yapmıyor. Kısaca bol Netflix ve Pentakill'li oturumlar!
CEF'in daha yeni bir sürümü bize neler sağlayacak?
Chromium tabanlı uygulamalar
Chromium tabanlı uygulamalar günümüzde yazılım geliştirmede en hızlı büyüyen araç ve programlardan bazıları. Büyük ihtimalle bu makaleyi okumak, Discord'da arkadaşlarınızla laflamak ve 10 şarkıdan oluşan o oynatma listesini yüzüncü kez dinlemek için Chromium tabanlı bir uygulama kullanıyorsunuz. Bu uygulamaların hepsi Chromium kullanıyor ve istemcimiz de aynı. İstemcinin Chromium Embedded Framework'ünü güncellemek bize Chromium'un yeni özelliklerine ve iyileştirmelerine erişim sağlıyor.
WebAssembly
Karmaşık talimatları, istemcideki çoğu uygulamanın hâlâ kullanmakta olduğu (önceki bloglarda bahsettiğimiz "ember uygulamalarını" hatırladınız mı?) temel JavaScript'ten çok daha hızlı çalıştırabilen bir kod formatı olan WebAssembly'den bahsedelim. CEF istemcide, kodları daha hızlı işlemek için özelleştirilmiş bir "mini bilgisayarı" taklit ediyor. WebAssembly çok sayıda programlama dilini desteklediği için mevcut kodları kullanmayı daha kolay kılarken bir yandan da işlemleri (farklı bir uygulama başlatmak yerine) bu "mini bilgisayar" üzerinden yürütmenin getirdiği performans avantajı da söz konusu. WebAssembly yavaş yavaş web'in her yanına entegre ediliyor ve Chromium desteği her yeni sürümde daha da artıyor. WebAssembly'ye erişim istemciyi hızlandıracak ve daha önce yapamadığımız şeyleri yapmamızı sağlayacak.
Web Workers
Tabii bir de Web Workers var. Tarihsel açıdan baktığımızda Chromium uygulamaların aynı anda bir kodu işlediğini görüyoruz. Bu sanki bir imalat hattında tek bir işçiyle çalışmak gibi. Ama Web Worker'lar ekibi arttırıyor ve böylece birden çok kod satırını yan yana çalıştırabiliyorsunuz. Örneğin ana istemci sizi bir oyuna sokmaya odaklanırken sohbet Web Worker'ı sohbetle alakalı her şeyi halledebilir. Yani çenesi düşük bir arkadaşınız size Teemo dizilimi hakkında fikir danışırsa yapacağınız sohbet istemcinizi yavaşlatmaz. Web Workers ayrıca istemciyi de daha hızlı hale getirecek.
Bu yeni özelliklerden faydalanmak için yeni kodlar yazmasak bile, CEF'in yazdığımız JavaScript'i daha iyi kullanabilmesi sayesinde yalnızca CEF'i güncelleyerek istemciyi daha hızlı hale getirdik. İstemcinin farklı alanlarını iyileştirirken yerel performans iyileştirmeleriyle iyi çalışacak yöntemlere odaklanabiliyoruz.
Diğer Güncellemeler
Son blog yazımızdan bu yana oyun sonu ekranında da ilerleme kaydettik. İlk olarak, oyuncuların hâlâ yavaşlık yaşadığı "İstatistikler Bekleniyor" sayfası esnasında neler olduğu hakkında veri toplayabilmek için bazı kodlar ekledik. Bu, bu kadar uzun olmaması gereken gecikme süresini saptamamıza ve iyileştirmemize yardımcı oldu. Ayrıca, 11.17 Yaması'nda bu sayfanın tamamen donma ihtimalini azaltan bir düzeltme yaptık. Oyun sonu ekranını daha da hızlandırmak için 11.19 Yaması'nda oyun motorunda ilave düzeltmeler yaptık. Ve son olarak, İddialar sistemini entegre etmekten çok mutluyuz ve bu yeni özelliğin, istemcinin performansını ve istikrarını etkilemediğinden emin olmak için üzerimize düşeni yapıyoruz.
Sırada Ne Var?
CEF güncellememiz istemciyi iyileştirmede şüphesiz ki çok değerli oldu. Bu yüzden daha sık bir güncelleme takvimi oluşturuyoruz (1,5 yıl beklemek gerekmeyecek yani :D). 2021'in geri kalanındaysa istemcinin istikrarını önceliğimiz tutmaya devam edeceğiz, İddialar Ekibi'yle oyun sonu ekranına çözümler bulacağız, çok sinir bozan hataları gidereceğiz ve deneyiminizi iyileştirmek için kendi kodlarımızı iyileştireceğiz. İstemci Temizleme Çalışmaları için çok önemli olan bu dönüm noktasını kutlarken bize katıldığınız için teşekkürler! Sıradaki yazıda görüşmek üzere.