Massamuistin nopeuden vaikutus pelien latausaikoihin

Liittynyt
16.10.2016
Viestejä
10
[H]ard|Forumin puolella on mielenkiintoinen ketju massamuistin nopeuden vaikutuksesta pelien latausnopeuteen (linkki). Ote Fallout 4:n testistä spoiler tagin sisällä.

Fallout 4 1080P (no mods) (Steam + FO4 moved)
Used a save game from one hour thirty minutes into the game. (1920X1080 and all game settings manually set to max)
Timer started when press Enter to Confirm (load) was pressed and stopped when the game loaded in.

Tested with steam install + FO4 moved (no other common folder steam games). Verified that other games could not be opened by trying to open one.

Order of testing: NVME, SSD, RAM, RAID. RAM drive only enabled for RAM drive test.

8 Hard Disk RAID 6 Array (WD Black 5TB 128MB Cache 7200RPM drives) (18.1TB of 27.2TB free)
30.25
23.34
21.74

512GB 950 Pro NVME in PCIE 3.0 X4 slot (with passive heatsink) (boot drive, ~135GB free)
7.54
7.26
6.9

512GB 850 Evo (empty except for Steam + FO4)
7.33
6.80
6.95

48GB RAM drive (3200MHz DDR4 16-18-18-32)
7.06
6.76
6.89

Vertailusta käy ilmi, että 512GB EVO 850 SSD-levy on suunnilleen yhtä nopea kuin 512GB 950 Pro NVME (PCIE 3.0 X4) levy ja 42GB RAM levy.

Intelin Optane SSD-levyt kiinnostavat ajatuksena, mutta onko niistä pelikäytössä mitään hyötyä jos edes keskusmuistin käyttö massamuistina ei nopeuta pelien latausaikoja? Linkissä olevien testien perusteella vaikuttaa, että Optane levyistä ei tule olemaan hyötyä. Fallout 4:sta pelanneena nopeammat latausajat kelpaisivat.

Onko kenelläkään tietoa missä tuo pullonkaula sijaitsee kun nopeammat massamuistit (siirtonopeus ja IOPS) eivät näytä nopeuttavan pelien latausaikoja? [H]ard|Forumin viestiketjussa pullonkaulaksi veikattiin ainakin yhden säikeen suorituskykyä, NTFS tiedostojärjestelmää, käyttöjärjestelmää ja pelintekijöitä.

Youtubesta löytyi video, jossa vertaillaan Mad Maxin latausaikoja Ubuntun ja Windows 10 välillä (testi kohdassa 0:18): Ubuntu 16.04 VS Windows 10 : Mad Max on a GTX 1070 Videossa Mad Max latautui nopeammin Ubuntussa. Testissä oli käytössä 1TB WD Green 5400 RPM. Sama testi olisi ollut mielenkiintoista nähdä SSD-levyllä.

Vielä lopuksi yhteenvetona. Minkä pitää muuttua, jotta nopeammat massamuistit nopeuttaisivat myös pelien latausaikoja?
 
Menee aika harrasteluksi. Näethän itsekin että HDD oli se oikeasti hidastavatta elementti.
 
Linkittämästäni ketjusta tuli tosiaan selville, että SSD-levystä nopeampaan massamuistiin päivittämisestä ei ole tällä hetkellä merkittävää hyötyä pelikäytössä.

Se mikä kiinnostaa on syy tuohon. Eli miksi nopeampi massamuisti ei nopeauta pelien latausaikoja / missä pullonkaula on.

Tällä foorumilla on käyttäjiä, joilla saattaisi olla tietoa mistä tuo johtuu (esim. @hkultala, @The Stilt).
 
Pelitiedostot on nykyisin käytännössä aina pakattu vähintään kerran, joten kun kiintolevypullonkaula poistetaan niin jäljelle jää sen jälkeen vielä tarvittavan datan purku muistiin. Kaikki pakkaustavat eivät purettaessa ole säikeistettyjä, joten pullonkaula voi olla puhtaasti yhden threadin suorituskyky.
 
Juu, datan purkaminen.

Datan purkaminen on luontaisesti peräkkäinen asia, jos kaikki on pakattu "samaan streamiin",
ei voida tietää mikä kohta pakattua tiedostoa vastaa mitä kohtaa purettua tiedostoa ennenkuin ollaan järjestyksessä purettu sinne asti.

Jos halutaan että purkamisen voi rinnakkaistaa moneen säikeeseen korkealla tasolla, pitää pakkaus tehdä paloissa, yhteen pakkausstreamiin pakataan osa datasta ja toiseen toinen osa datasta.



Muistaakseni esim. perinteisessä zip-paketisa kaikki tiedostot on pakattu erikseen, ja zip-paketin headerista(joka sijaitsee pakettitiedoston lopussa) näkee mistä mikäkin tiedosto alkaa. Tästä voidaan alkaa rinnakkain purkamaan monia tiedostoja.

Unixeissa käytetyssä tar+gzip-pakkauksessa(ja uudemmissa tar+bzip2 tai tar+lzma) taas tiedostot paketoidaan ensin ilman pakkausta tar:in sisään ja sitten se tar-paketti pakataan gzip-pakkauksella(tai bzip2 tai lzma-pakkauksella). Hyöty on se, että kun pakatessa tiedostot on jo yhdistetty, pystytään paremmin hyödyntämään eri tiedostojen välistä samankaltaisuutta, ja myös nuo tiedostonnimitiedot yms. tulee pakattua, ja pakkaussuhde on parempi.

Mutta ongelmana tässä on se, että mitään koko paketista ei voi purkaa ennen kuin ollaan purettu kaikki ennen sitä, purkaminen sarjallistuu.

Pikaisesti testasin, niin tar.gz-tiedoston tiedostolistauksen hakeminen vei käytännössä yhtä paljon user-CPU-aikaa kuin koko paketin purkaminen, eli koko paketin gzip-pakkaus piti purkaa täysin tiedostolistauksen saamiseksi. Kokonaisaika sen sijaan oli tiedostolistausta tehdessä hiukan pienempi kuin purkaessa, koska ei tarvinnut kirjoittaa levylle purettuja tiedostoja.


Eli tosiaan pelien latausaikojen nopeuttamiseksi pelikehittäjien pitäisi kiinnittää huomiota siihen, miten se pelin data paketoidaan levylle. Liian pienetkin tiedostot toisaalta lisäävät overheadia, mutta yksi iso uloimmalla tasolla pakattu datamöhkäle sarjallistaa pelin datojen lataamisen.




Videotiedostot taas...

Videotietostoissahan data on tyypillisesti pakattu muutama frame kerrallaan. Välillä tulee "keyframe"(joka on pakattu suurinpiirtein jpegin tyylisellä 2d-stillkuvanpakkauksella) ja sitten sen jälkeen tule monta framea joista välitetään tieto, että miten ne ovat muuttuneet edellisestä(tai seuraavasta) keyframesta. Näissä formaatti on suunniteltu siten, että purkaminen voidaan aloittaa mistä tahansa keyframesta; Joko keyframeissa on joku tunniste(bittikombinaatio jota muuten tiedostossa ei esiinny, ja tieto siitä, kuinka mones keyframe on kyseessä) tai jossain on joku header joka kertoo keyframejen paikan.

Eli korkealla tasolla käytännössä eri keyframesta alkavien pätkien purkaminen rinnakkaistuu helpolla, koska missä tahansa järkevän mittaisessa videopätkissä keyframeja on tarpeeksi, ja tämän lisäksi videoformaattien purkamiseksi tehdään matalalla tasolla aina asioita, jotka rinnakkaistuvat siellä; Lasketaan jotain DCT-muunnoksia jne.
 
Täällähän olikin hyödyllistä informaatiota. Itse olen miettinyt mistä johtuu Civilization 6:n pitkähköt latausajat vaikka peli on asennettu (ja tallennustiedostot) nopealle SSD levylle. Mitä ilmeisemmin nopeampaan tallennusmediaan on turha investoida jos aika menee todellisuudessa pakattujen tiedostojen purkamiseen.
 
Tossa on civ6 oli bugi win10:ssä joka nosti niitä latausnopeuksia.Liittyi defenderiin.Itse asentaisin _aina_ noi nopeammalle ssd:lle.Jos siellä on jotain pakattuna niin yleensä ne pystyy purkamaan koska käyttävät tunnettuja pakkaus softia,tilaa tietenkin vie sitten enemmän.Falloutissa taas on vaikka mitä fixejä mitkä nopeuttaa niitä latauksia.
 
Viimeksi muokattu:
Falloutin latausajat (modien/fixien mukaan) ovat myös mm. FPS'ään lukittu. Nämä "faster loading times" -modit ottaa fps-rajoituksen pois ja nopeuttaa lataamista loadin screen ajaksi. Rajoitus tulee päälle kun on lataus suoritettu.
 
Falloutin latausajat (modien/fixien mukaan) ovat myös mm. FPS'ään lukittu. Nämä "faster loading times" -modit ottaa fps-rajoituksen pois ja nopeuttaa lataamista loadin screen ajaksi. Rajoitus tulee päälle kun on lataus suoritettu.
Siellä on myös pienennettyjä texture packejä(ne texturet oli alunperin käsittäkseni liian suurilla resoilla tms) joiden pitäisi nopeuttaa sitä lataamistä myös.Nyt kun sieltä tuli ne 4k texturet niin luulisi että m.2/pcie ssd:stä olisi oikeasti hyötyä.Noi tosin vaatii hieman tehoa näytöohjaimilta/prossulta että pyörii kunnolla.
 

Statistiikka

Viestiketjuista
261 559
Viestejä
4 540 126
Jäsenet
74 821
Uusin jäsen
TunnusK

Hinta.fi

Back
Ylös Bottom