vrchat吧 关注:42,063贴子:396,376
  • 19回复贴,共1

做了一個簡單測試不同顯卡在CPU下的開銷測試

只看楼主收藏回复

大量球體,每個球體八個材質,由於過小零碎的網格所以經過profile分析僅只有5%的頂點獲取效率並瓶頸,不過一般也不太容易讓GPU瓶頸。
不過因此同樣12.2M或著21M多的頂點每幀而已幀數就不高了。
如果你GPU瓶頸了建議你直接換張顯卡了...
使用一個額外動態照明光源產生setpasscall,否則只有drawcall容易變歡樂表測試。(batches可以算做drawcall,但實際開銷佔比低於setpasscall太多)
通過調整範圍生成約一萬多個setpasscall和總計十萬個多的batches來測試CPU。
純靜態網格+材質規避主線程計算骨骼影響。

測試配備:5600X+3060(N卡)
可以評估一下CPU和不同顯卡下能跑到多少,在測試前請關閉所有可能占用L3緩存的浪費,即使CPU未滿載或在SMT下達到50%使用率,仍會因為L3的miss率上升影響10~20%性能。

drawcall負荷重的一個特點就是,PCM工具中觀察cache miss不高,但memory 延遲週期會上升很多。
鏈接轉圖片,用OCR轉換

考慮可能有人連不上mega之類的,使用我域名網盤達成下載。


IP属地:中国台湾1楼2024-12-16 00:06回复

    從Unity3D編輯器檢視中可見,batches十萬多個,setpasscall 11058個。
    比例算正常範圍,不過即使是相同的數值開銷也未必一樣,實際上還是得看具體實現,盡管數量級差異並不大,但開銷的特徵基本上可以適用於每種CPU,也就是這個CPU在這方面提升10%那換成其他測試也會差異很小都是10%左右。


    IP属地:中国台湾2楼2024-12-16 00:12
    回复
      2025-08-02 21:23:59
      广告
      不感兴趣
      开通SVIP免广告
      是清月,我们有救了


      IP属地:云南来自Android客户端3楼2024-12-16 00:40
      收起回复
        分享其他人性能數據(還在等待其他人回覆)
        12600KF+7900XTX組合 平均27fps 1%沒回
        5900HX(zen3 4.6Ghz+砍半L3 16MB) 平均18fps 1% 12fps
        (L3越小幀數飄移會嚴重)

        VRchat現在還有主線程資源管理腳本GC問題,會對主線程在不同環境下動態發生額外10~20%佔比,最終影響降低20%或相當於需要提高30%幀數影響,低點狀態也會產生約10~15%幀數影響。
        (每個VRC版本都會改來改去...萬年大坑)
        而GC對L3的性能影響幾乎呈現線性,比drawcall更為嚴重。
        純GC負載情況下,96MB可以相當於32MB L3的三倍性能。


        IP属地:中国台湾5楼2024-12-16 02:18
        收起回复
          宝宝,我喜欢你


          IP属地:山东来自Android客户端6楼2024-12-16 08:12
          回复
            轉載其他人數據
            13490F 33fps(平均)
            5500 21fps(平均)
            上面的5900HX是移動平台使用LPDDR因為時序高而延遲大所以性能更差。
            弄了一個更複雜難優化的組合,
            一共64種材質*4+8*8=320種組合,避免被優化太多。
            比較重要的是提高燈光來轉換為setpasscall的比例加大。

            同樣5600X+3060 只能24fps

            相比原本可以跑到約280萬batch每秒,這次僅只能到約115萬左右。
            當1:1 setpasscall時,大概約一百萬左右,當綁定紋理甚至開啟更多選項構造等,都會進一步降低繪製的性能,約只能到50~60萬每秒的batches。


            IP属地:中国台湾7楼2024-12-16 22:03
            收起回复

              使用版本2的測試,測試的硬件規格為9800X3D+RTX4080
              平均41fps 1% 32fps
              對比5600X是 24fps 1% 20fps


              IP属地:中国台湾8楼2024-12-16 22:27
              回复
                弄了版本3



                用新買的acacia的avatar用於測試,有12個材質活動+只有1萬6千面足夠低來測試了。
                為了避免Unity 2022的計算著色器對蒙皮影響,改用Unity6來啟用計算蒙皮合併(39fps->44fps)減少不必要的CPU瓶頸和提高蒙皮渲染效率降低GPU開銷。
                主色
                主色紋理
                陰影
                陰影蒙板
                RimShade
                RimShade蒙板
                發光設置
                法線貼圖各異向性反射
                各異向性反射蒙板
                Backlight
                Backlight蒙板
                反射
                反射蒙板
                MatCap
                MatCap蒙板
                MatCap 2nd
                MatCap 2nd蒙板
                Rim Light設置
                Rim Light蒙板
                Glitter設置
                輪廓設置
                輪廓顏色
                輪廓蒙板
                _______
                基本上liltoon大概能用都用了,但沒有起用曲面細分避免負荷過重。
                除開主燈光通道外,額外添加八個像素光照並修改上限制八個額外光照通道。
                一共64個avatar,有512個蒙皮網格。
                5600X下可以跑到約44fps所以約60萬多的每秒drawcall,基本上不會有這麼離譜的純粹負荷,並且幾乎全通過副的像素光照通道點亮產生近乎1:1的setpasscall來最大化開銷。


                IP属地:中国台湾9楼2024-12-17 01:57
                收起回复
                  2025-08-02 21:17:59
                  广告
                  不感兴趣
                  开通SVIP免广告
                  通常而言負荷越重時間增長越快,兩倍的drawcall消耗的時間會超過兩倍,這是因為L3 miss率越高所以必須訪問memory。
                  而版本3與版本2都在約40%miss左右,實務上因為動畫和物理骨骼實質採樣約在50%上下,所以實際重的drawcall可能只有40~50萬左右每秒。
                  (50%大概相當於大量很重的avatar,約100MB+大小,很多指標嚴重超標,全開情況下總數超過30+的人)
                  如果你的CPU L3砍半甚至四分之一,性能可能只剩20萬每秒出頭。
                  然而不同微架構不能相比,除了重要的分支預測和L3的尺寸外,也要考慮微架構比較細節處,如ROB的大小和讀寫佇列大小和併發數(讀寫的),甚至更細節很難查詢到的細節如只能寫代碼測試得到部份單元的工作週期與延遲。
                  不過也不用過度擔憂,一般而言渲染線程是獨立的線程會與主線程一起併行,當渲染線程瓶頸時影響時間最大,隨著主線程比渲染線程重得多的情況下,影響的時間比例會大幅下降,僅剩很小的同步耗時。
                  不過蒙皮的骨骼會在主線程計算,所以還是盡量減少活動的骨骼數量,也就是有活動的蒙皮所綁定的骨骼。
                  不過也不能直接照版本3來計算,因為實務上很可能混合介於版本3到版本1間,所以僅做估算意見來製作場景。
                  __________
                  版本3數據 12600KF +7900XTX->50fps(平均)
                  另外上面兩個zen3 5500 +N 35fps(平均) 13490F+N 53fps(平均)都是版本3。


                  IP属地:中国台湾10楼2024-12-17 22:34
                  收起回复
                    針對了新版本重測一下...
                    VRchat的drawcall是原本Unity的雙倍還重 性能特徵不同...
                    不知道改哪裡了...


                    IP属地:中国台湾11楼2024-12-20 00:19
                    收起回复
                      1.主線程會計算蒙皮骨骼,正常來說應該材質CPU耗時應該跟主線程分離且選擇最重的,但骨骼+燈光情況下必須進主線程計算材質,導致累加時間和cache miss。
                      (Unity的async渲染線程收益會隨蒙皮(有骨骼才算蒙皮才允許匯出)上材質遞減)
                      一般網格材質沒這問題,你打很多盞燈不該出問題。
                      2.VRchat改了drawcall的執行,附加了其他數據,尤其像素需要開額外pass(通道),pass越多執行相比原本的Unity就是顯著的慢而且非常慢,還會隨著時間持續性下降幀數到一定幅度。
                      不同Shader不同情況下,將只剩約15~25萬drawcall每秒性能(每個drawcall都是setpasscall,但即使不是setpasscall也依然非常重)。(原本Unity為60萬每秒)
                      我記得以前測好像沒這些問題啊...到底改多少了...
                      Cache miss原本就會被拔高一些,但壓低了drawcall造成的帶寬延遲增加,代表說附加很多數據在一條drawcall上。
                      另外這會導致L3大的相對優勢會被放大一些,在我測試中可能翻倍cache提升30~40%被拔高到50%+的IPC。


                      IP属地:中国台湾12楼2024-12-20 01:20
                      收起回复