Tek kanal RAM'le oynuyorsanız işlemci her karede boşuna bekliyor

· Yazarı: Kasayı Açanlar
İçindekiler
  1. Meşgul görünen çekirdek, aslında sırada bekliyor
  2. Aynı 16 GB, iki farklı makine
  3. İki modül takılı olması çift kanal demek değil
  4. Dahili grafikte aynı hata iki kat pahalı
  5. Ne zaman suçlu bellek değil
  6. İşlemciyi suçlamadan önce on saniye

Tek bellek modülüyle oynadığınızda işlemcinin çekirdekleri her karede bir miktar hesap yapmak yerine bellekten veri bekler; bu yüzden kalabalık ve işlemciye yüklenen sahnelerde kare süreleri şişer, sistem işlemcisi eskimiş gibi davranır. Ortada genellikle bir hesaplama gücü eksiği yoktur. Eksik olan, o gücü besleyen yolun genişliğidir: tek modül, işlemcinin iki bellek kanalını paralel kullanma imkânını elinden alır ve bu kayıp tam olarak "CPU yetmiyor" gibi görünen bir tablo üretir.

Tek kanal RAM'le oynuyorsanız işlemci her karede boşuna bekliyor

İkinci ekranda Görev Yöneticisi'nin Bellek sayfası açık ve ben oyunun kalabalık meydanına girdiğim anda gözümü oraya veriyorum. "Kullanılan yuvalar: 2'de 1" satırı orada duruyor, yanında da tek modülün hızı. Şehirde kimse yokken aynı harita tıkır tıkır akıyor; ama onlarca karakter, tabela, gölge ve ses aynı kareye bindiğinde ekrandaki kare süresi grafiği düz bir çizgi olmaktan çıkıp testere dişine dönüyor. Sayaç bir anda yüz seksenlerden ellilerin ortasına iniyor. İşlemci satırına bakıyorum: toplam kullanım yüzde ellilerde, hiçbir çekirdek tavana vurmuyor, sıcaklık normal, güç limitine takılma yok. Ekran kartı da yüzde altmışlarda ama dalgalı. Yani hiçbir bileşen sonuna kadar çalışmıyor, buna rağmen iş bitmiyor. Buradaki sayılar oyundan oyuna, çözünürlükten çözünürlüğe değişir; anlatmak istediğim rakam değil, şekil. Şekil her seferinde aynı: kimse dolu görünmüyor, ama kare gecikiyor.

O gün kafamda oturan cümle şu oldu: işlemci meşgul, ama üretmiyor.

Meşgul görünen çekirdek, aslında sırada bekliyor

Görev Yöneticisi'nin gösterdiği yüzde, bir çekirdeğin o anda meşgul olduğunu söyler; o meşguliyetin faydalı iş ürettiğini söylemez. Bellekten veri isteyen ve cevabı gelene kadar ilerleyemeyen bir çekirdek de meşgul sayılır. İşlemci, bu boşluğu normalde birkaç numarayla gizler: sıra dışı yürütme, ön getirme, eşzamanlı iş parçacıkları ve önbellek. Elindeki bellek yolu darsa bu numaraların hepsi birden tükenir ve bekleme doğrudan kare süresine yazılır.

Bir karede işlemcinin yaptığı iş sadece matematik değil. Çizim komutlarının hazırlanması, fizik, yapay zekâ, animasyon iskeletleri, ses karışımı, doku akışı ve ekran kartına gönderilecek komut tamponları hep bellekten geçiyor. Sahne kalabalıklaştıkça bu trafiğin hacmi de artıyor. İki modül takılı olduğunda işlemci iki kanala aynı anda istek gönderebiliyor; aynı boyut ve hızda tek modüle kıyasla kullanılabilir bellek bant genişliği kabaca iki katına çıkıyor. Tek modülde ise belleğin önünde aynı anda bekleyen istek sayısı ve yonganın önünde açabileceği banka sayısı azalıyor; yani darboğaz yalnızca "boru daha ince" değil, "sıraya daha az iş koyabiliyorsun" meselesi.

Bu yüzden belirti kendini yanlış etiketliyor. Kare düşüyor, işlemci yüzdesi düşük kalıyor, oyuncu da "işlemcim yetersiz" diye yeni bir işlemci alıyor. Yeni işlemciyle aynı sahne yine aynı yerde tıkanıyor, çünkü bekleyen taraf değişmemiş.

Aynı 16 GB, iki farklı makine

Kapasite ile kanal yapılandırması iki ayrı sorudur ve Windows'un size gösterdiği ekranlar bu ikisini birbirinden ayırmaz. DxDiag'ı açtığınızda "Memory: 16384MB RAM" satırını görürsünüz; Ayarlar > Sistem > Hakkında sayfası da toplamı söyler, o kadar. Tek modül 16 GB ile iki modül 8+8 GB, o ekranlarda harfi harfine aynı görünür. Bu yüzden iki farklı makine aynı sanılıp aynı oyunu bambaşka oynayabiliyor.

Kapasitenin kendi başına önemi, oyun artı Windows artı arka plandaki tarayıcı toplamı belleğin üstüne çıktığında başlar; o noktada disk takas dosyası devreye girer ve takılma karakteri değişir. Kanal sorunu ise kapasite bolken bile kendini gösterir. İkisini karıştırmamak için takılmanın neye benzediğine bakıyorum: düzenli aralıklarla gelen uzun donmalar kapasite tarafını, sahne yoğunluğuyla birlikte artan kare süresi dalgalanması ise kanal tarafını işaret ediyor.

İki modül takılı olması çift kanal demek değil

Bu işin en sinir bozucu kısmı burada. Kasada iki modül görünüp sistem tek kanalda çalışabiliyor. Anakart üreticileri hangi iki yuvanın birlikte kullanılması gerektiğini kılavuzda yazıyor; dört yuvalı kartlarda bu genellikle ikinci ve dördüncü yuva oluyor. Modüller birinci ve ikinci yuvaya takıldığında ise birçok kartta kanallardan biri boş kalıyor.

Sonuç, tek modüllü sistemle neredeyse aynı: 16 GB'a çıktın, hiçbir şey değişmedi, "işlemci eski" tezi daha da güçlendi.

Kontrol etmenin yolu kasa kapağını açmadan da var:

  • Görev Yöneticisi > Performans > Bellek: "Kullanılan yuvalar" ve "Biçim" satırları kaç modül olduğunu ve hangi tip olduğunu söyler.
  • CPU-Z'nin Memory sekmesi: "Channel #" satırı Single ya da Dual yazar; asıl cevap burada.
  • PowerShell'de Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, Capacity, Speed komutu, her modülün hangi yuvada olduğunu tek tek listeler.

Üçünü birlikte okumak gerekiyor, çünkü hiçbiri tek başına tam resmi vermiyor. Görev Yöneticisi iki modül der, CPU-Z tek kanal der; hangi yuvaya takılı olduğunu ise ancak yuva listesinden anlarsınız.

Dahili grafikte aynı hata iki kat pahalı

Ekran kartı işlemcinin içinde olan sistemlerde, yani dahili grafikle oynanan dizüstülerde ve bütçe masaüstülerinde bu konu bir kademe daha önemli. Çünkü grafik birimi ayrı bir belleğe sahip değil; aynı sistem belleğini, aynı kanalları işlemciyle paylaşıyor. Bu makinelerde Görev Yöneticisi'nin Bellek sayfasında "Donanıma ayrılmış" satırının belirgin bir yer tuttuğunu görürsünüz, yani belleğin bir kısmı zaten grafiğe ayrılmış durumda. Geriye kalan bant genişliği de tek kanaldan akıyor. Aynı 8 GB tek modül, harici ekran kartlı bir kasada olduğundan çok daha ağır bir bedel ödetir.

Ne zaman suçlu bellek değil

Buraya kadar anlattıklarım bir kalıp; her makineye yapıştırılacak bir etiket değil. Sınırları da açıkça söylemek gerekir.

Oyun ekran kartına yüklenen bir sahne çalıştırıyorsa, yani yüksek çözünürlük ve ağır ışın izleme ile ekran kartı zaten tavandaysa, tek kanalın izi neredeyse silinir. Aynı makine bir oyunda eski, başka bir oyunda gayet iyi görünür; bu tutarsızlığın kendisi bir ipucudur ama tek başına kanıt değildir.

İşlemci gerçekten eskiyse, iki çekirdekli ya da dört iş parçacıklı bir modelse, çift kanal onu yeni bir işlemciye dönüştürmez. Kanal yapılandırması var olan gücü besler, olmayan gücü yaratmaz.

Bellek lehimliyse yapılabilecek bir şey yok; o durumda yapılacak şey kalabalık sahnelerde işlemciye yük bindiren ayarları (yapay zekâ yoğunluğu, gölge ve çizim mesafesi gibi) kısmak ve kare hızını sabitleyip kare süresini düzleştirmek olur. Bu bir çözüm değil, idare etme yöntemidir ve öyle kalır.

Son olarak, "tek kanaldan çift kanala geçince şu kadar kare artıyor" diye bir sayı vermeyeceğim. Böyle bir sayı, oyunun sahnesine, çözünürlüğe, işlemcinin kendisine ve kareyi kimin sınırladığına göre o kadar değişir ki, verdiğim rakam sizin makinenizde yanlış bir beklentiye dönüşür.

İşlemciyi suçlamadan önce on saniye

Bir sahnede kare süresi dalgalanıyor, hiçbir çekirdek tavan yapmıyor ve ekran kartı da tam dolu görünmüyorsa, sıradaki işlem yeni işlemci bakmak değil. Görev Yöneticisi'nin Bellek sayfasını açıp "Kullanılan yuvalar" satırına bakmak, on saniye sürüyor. Orada 2'de 1 yazıyorsa, elinizde bir bellek yolu sorunu var ve bu sorun kendini her karede, tam da en kalabalık sahnede, işlemci yetmiyormuş gibi göstermeye devam edecek.

Kasayı Açanlar Kasayı Açanlar Bu ekip tarafından yazıldı

Kasayı Açanlar, bilgisayarını kendi elleriyle söküp takmayı alışkanlık haline getirmiş kişilerden oluşuyor. İkinci el parçalarla kasa toplamış, uyumsuz bir parça yüzünden hata mesajıyla uğraşmış ve oyunların resmi gereksinim satırlarını kâğıt üzerinde karşılaştırmayı öğrenmiş bir grup.

Ekibimizle tanışın