2014 yılında Tübitak OPY Samsun Bölgesine davet edilen projemiz: “Yeşil Kod”
Sunucu tabanlı web yazılımlarının (PHP, ASP, JSP vs) çalıştığın donanımın kaynaklarını verimli kullanarak, dinamik web sitelerinin web tarayıcısına yüklenme süresini azaltarak kullanıcılarına daha hızlı hizmet vermesini sağlayacak bir algoritma tasarlamak ve aynı zamanda elektrik enerjisi tasarrufunda bulunmaktır.
Kullanılan Yöntemler ve İşlemler
Bizler bu araştırma çalışmasında yazılımların enerji verimliğini artırarak, üzerinde koştuğu donanımların daha az enerji tüketmesini sağlayacak yöntemler üzerinde çalıştık. Sistem yazılımları, uygulama yazılımları ve web yazılımları gibi birçok sınıflandırma içerisinde, dünyada kullanıcı sayısı en fazla olan web yazılımları olduğu için bu alana odaklanmaya karar verdik. Bu yazılım kategorisinde elde edilen başarımın toplam faydası daha yüksek olacaktır.
Biz bu projede herhangi bir tür sunucu taraflı web yazılımına kolayca entegre edilebilecek bir ara katman tasarladık. Bu katman kullanıcı ile sunucu yazılımı arasında durarak istemcinin taleplerini çok daha hızlı yanıtlamakta ve sistem kaynaklarının kullanımını dolayısı ile elektrik tüketimini düşürmektedir.
Gözlemler, Veriler ve Bulgular
Sistem yazılımlarını incelediğimizde bunların çekirdek, aygıt sürücüsü (software drivers), yardımcı (utility) yazılımlar ile grafik alt sistemi sınıflandırması gibi bileşenlerden oluştuğunu gördük. Bu yazılımların performans/verimlilik geliştirme açısından incelediğimizde bunların çoğunlukla ticari şirketler bünyesinde kapalı olarak geliştirilen (doğrudan müdahale edilemeyen) bilgisayar yazılımları olduğunu fark ettik.
Bu proje ile öncelikle seçtiğimiz yazılım alt sınıfının en favori üyelerini, yazılım kod satırlarının işletilme sıklığı açısından başarım testlerine tabi tuttuk. Kendi kurduğumuz laboratuvar ortamında, değişen yükler altındaki yazılımların, işlemci zamanı açısından tükettiği enerji miktarları açısından birçok ölçümler yaptık ve aynı sınamaları geliştirdiğimiz yazılımı ara katman olarak kullanarak tekrarladık. Daha sonra elde ettiğimiz sonuçları dünya ölçeğinde oluşturduğumuz bir örnek uzayı kullanarak ölçeklendirdik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[crayon-67051d950976f453323799 lang="php" ] <?php // istek yapılan URL'yi oluştur $istenen_url = 'http://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; // İstek yapılan URL için kullanılacak kaşe dosyası $depo_patika = dirname(__FILE__).'/depo/'.md5($istenen_url).'.yesil'; // Depo dosyası mevcutsa oku, tarayıcıya gönder ve bitir if (file_exists($depo_patika)) die(file_get_contents($depo_patika)); // Bu fonksiyon çıktı tamponunu (output_buffer) // bir disk dosyasına kaydeder. function sayfayi_depola($cikti_tamponu) { global $depo_patika; // Depo dosyası mevcut değilse oluştur if (!file_exists($depo_patika)){ file_put_contents($depo_patika, $cikti_tamponu); } return $cikti_tamponu; } // Çıktı tamponu tarayıcıya aktarılmadan önce // <sayfayi_depola> alt yordamına gönder ob_start('sayfayi_depola'); ?> |
Sonuç
Modern Dünya şartlarında, mevcut enerji kaynaklarının azalması ve artan enerji ihtiyacını karşılama çabalarının zorluğu, beraberinde enerji tasarrufunun zorunluluğunu da gündeme getirmiş. Böylece yazılım verimliliği sağlanırken enerji tasarrufu da sağlayacak bu ara katman ile hem web ziyaretçisinin bekleme süresini asgariye indirdik hem de karbon salınımının düşürülmesine varıncaya kadar yüz milyonlarca dolar tasarruf sağlayabilecek bir algoritma ve yazlım geliştirdik.
Her web sitesine kolayca uygulanabilecek ara katman bir yazılım geliştirdik. Geliştirdiğimiz temel algoritmanın kullanılması noktasında yeterli bilinç düzeyi oluşturulabildiği takdirde dünyadaki açlık sorununun bile tamamen ortadan kaldırılabileceğini gördük.