Performans & optimizasyon · Platform & kalite
CPU / GPU: İş Paylaşımı Gümrüğü
Kare bütçesi aşıldıysa sıradaki soru «kaç FPS?» değil, hangi işlemci ailesi dilimi yedi? Bu sayfa CPU ve GPU'yu rakip değil gümrük ortakları olarak anlatır: kim bekliyor, kim şişiriyor, kim yanlış yerde optimize ediliyor. FPS mantığı ms SLA'sını kurdu; burada dilim teşhisi vardır.
Holodepth bu yaprağı fizik collider / async world dersi veya düşük seviye GPU mimari turu olarak yazmaz. Bakış açısı: web 3D ürününde CPU-bound ile GPU-bound karıştırılırsa yanlış yerde kesilir; senkron okuma ve upload «gizli CPU» üretir; GPU boşken CPU tıkanabilir. Fizik gözlüğüyle görev dağılımı Three.js · CPU / GPU yaprağındadır. Asset ve LOD maliyeti sonraki PLATFORM yaprağındadır.
Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «Önce bütçe, sonra hangi taraf. CPU-bound ve GPU-bound belirtileri ayrılır. Stall ve readback sahte GPU'dur. Upload vergisi yazılır. Yanlış tarafı kesmek zaman kaybıdır. Fizik stratejileri Three izleğindedir. Sonraki kapı asset sıkıştırma ve LOD'dur.»
Bu sayfanın sınırı · komşu konularla ayrım
Bu sayfa PLATFORM performansında CPU / GPU iş paylaşımı teşhisini anlatır:
- Bütçe sonrası hangi taraf
- CPU-bound / GPU-bound belirtileri
- Stall, readback, upload vergisi
- Yanlış kesme · üç teşhis profili
Bilinçli olarak dışarıda bırakılan konular:
- Kare ms SLA / jank politikası → FPS mantığı
- Fizik roller, collider, async fizik → Three.js · CPU / GPU
- Draco, texture, mesh LOD → Asset sıkıştırma & LOD
- XR stereo çarpanı → Stereo & gecikme
Kısa ayrım: Bu sayfa «dilimi kim yedi?» · FPS «dilim ne kadar?» · Three CPU/GPU «fizik + denge stratejisi» · Asset/LOD «veri boyutu ve seviye».
Önce bütçe, sonra taraf
CPU/GPU tartışması kare SLA'sı olmadan spekülasyondur. Holodepth sıra: (1) ms tavanı aşıldı mı, (2) hangi dilim, (3) dilim CPU mu GPU mu. «GPU'yu optimize edelim» cümlesi, ana iş parçacığı 14 ms yerken boş gümrük kapısıdır.
Taraf seçmeden kesmek, yanlış gümrüğü soymaktır.
CPU-bound: ana iş parçacığı şişmesi
Web 3D'de CPU tarafı çoğu zaman tek ana iş parçacığı + worker'lardır. Belirtiler:
- Yüksek JS / scripting süresi; GPU idle veya düşük
- Çok sayıda küçük draw / sık material ve state değişimi
- Her kare pahalı sahne grafı gezintisi, raycast, sıralama
- GC spike'ları ile jank (FPS yaprağındaki spike politikası)
Holodepth: CPU-bound'da ilk şüphe «daha az iş / daha seyrek iş / daha toplu iş»tir; shader'ı kısaltmak genelde yanlış kapıdır. Instancing ve batching burada araçtır; fizik collider sadeleştirme Three yaprağında derinleşir.
GPU-bound: fill ve shader faturası
GPU tarafı pikseli ve paralel işi yer. Belirtiler:
- CPU rahat, GPU süresi / occupancy yüksek
- Çözünürlük veya overdraw artınca FPS doğrusal düşer
- Ağır post, şeffaflık yığınları, büyük gölge haritaları
- Karmaşık fragment maliyeti (özellikle mobil)
Holodepth: GPU-bound'da draw call sayısı tek başına suçlu olmayabilir; fill-rate ve bant genişliği sık asıl vergidir. XR'de bu fatura stereo ile çarpılır (stereo yaprağı); burada genel web 3D teşhisi vardır.
Sahte GPU: stall ve readback
Profilde «GPU» görünüp aslında CPU'nun GPU'yu beklemesi (veya tersi) sık görülür. Klasik cinayetler:
- Readback: GPU'dan CPU'ya senkron okuma (piksel / buffer); pipeline'ı dondurur
- Zorunlu flush: her kare state'i sıfırdan kurmak, gereksiz get* sorguları
- Tek karede hem ağır upload hem ağır draw: gizli beklemeler
Holodepth: «GPU yavaş» demeden önce senkron köprü var mı diye bakın. Asenkron / bir kare gecikmeli okuma çoğu üründe yeterlidir; anlık readback ticket'ta exception olmalıdır.
Upload vergisi: CPU→GPU köprüsü
Texture, buffer, geometry upload'u hem CPU'yu hem bus'ı yer; spike üretir. Holodepth upload'u «üçüncü taraf» gibi yazar: ne saf CPU işi ne saf GPU fill. Steady-state'te her kare megabyte basmak yasaktır; yükleme fazı FPS yaprağındaki «yükleme spike'ı ayrı yazılır» kuralına bağlanır.
Sıkıştırma ve boyut bir sonraki asset yaprağındadır; burada ilke: upload zamanlaması ve sıklığı bütçe kalemidir.
Köprü vergisi, iki yakadaki faturadan ayrıdır.
Bir taraf boş, diğeri dolu
İdeal karede CPU hazırlığı ile GPU işi örtüşür. Dengesizlik:
- CPU şişman, GPU aç: daha az JS / daha az draw setup; GPU'ya iş vermeden «shader optimize» anlamsız
- GPU şişman, CPU aç: çözünürlük, overdraw, material maliyeti; draw call birleştirmek tek başına yetmeyebilir
- İkisi de orta ama spike: async / GC / upload; ortalama yanıltır
Holodepth teşhis cümlesi ticket'a yazılır: «CPU-bound · draw setup» veya «GPU-bound · transparent overdraw» gibi. Belirsiz «ağır sahne» yasaktır.
Yanlış tarafı kesmeyin
Sık zaman kayıpları:
- CPU-bound sahnede texture çözünürlüğünü düşürmek
- GPU-bound sahnede mikro-JS micro-optimizations
- Ölçmeden «instancing her şeyi çözer» demek
- LOD ekleyip asıl sorunun senkron readback olduğunu kaçırmak
Kesme sırası ürün ve teşhise bağlıdır; XR stereo yaprağındaki kesme listesi XR bağlamıdır. Burada kural: teşhis → taraf → araç.
Üç teşhis profili
Ticket diline yapışan üç iş paylaşımı durumu:
-
01 · Side
CPU-bound vitrin
- Belirti
- JS yüksek · GPU rahat
- İlk kesim
- Draw/state · graf gezintisi
- Risk
- Shader'a sapmak
-
02 · Side
GPU-bound dolgu
- Belirti
- Fill/post yüksek · CPU rahat
- İlk kesim
- Overdraw · çözünürlük · şeffaf
- Risk
- Mikro batch takıntısı
-
03 · Side
Köprü / spike
- Belirti
- Upload · readback · GC
- İlk kesim
- Zamanlama · async · sıklık
- Risk
- Ortalama FPS'e bakmak
Holodepth perspektifleri
Sıra: SLA → dilim → taraf
Taraf seçimi bütçe ihlalinden sonra gelir. Aksi spekülasyondur.
Sahte GPU'yu ayırın
Stall ve readback, fill-rate sanılmamalıdır.
Upload üçüncü kalemdir
Köprü vergisi ticket'ta görünür olmalıdır.
Teşhis maddeleri
- Kare SLA ihlali kanıtlandı mı? (FPS yaprağı)
- Teşhis profili (CPU / GPU / köprü) seçili mi?
- CPU-bound belirtileri ölçümle uyumlu mu?
- GPU-bound belirtileri çözünürlük/overdraw testi ile net mi?
- Senkron readback / get* var mı?
- Upload sıklığı ve boyutu yazıldı mı?
- Yanlış tarafta optimizasyon yapılmıyor mu?
- Fizik stratejisi bu sayfaya karışmamış mı?
Holodepth içgörüsü
«CPU mı GPU mı?» sorusu çoğu zaman «ölçmeden kestik» öyküsünün başlığıdır. Holodepth: önce dilimi tartın, sonra tarafı seçin, sonra aracı çekin.
Sonraki kapı: asset ve LOD
Taraf teşhisi çoğu sahnede verinin ağırlığına bağlanır: texture, geometry, sıkıştırma, LOD. Sonraki (ve bu grubun son) sayfa Asset sıkıştırma & LOD bu kalemi anlatır.