Robert M. Love a Vista "lelassul a hálózat, ha multimédiát játszok le" problémájáról

Címkék

Robert M. Love - ismert Linux kernelhacker, korábbi Montavista és Novell alkalmazott - szemügyre vette az interneten több helyen is felbukkant Vista hálózati problémát, miszerint ha multimédiás tartalmakat játszik le a felhasználó Windows Vista operációs rendszeren, a hálózati sebesség akár a maximális áteresztőképesség töredékére is csökkenhet. A problémát Mark Russinovich - ismert Windows szakértő, Microsoft alkalmazott - tegnap már magyarázta. Erre reagált Robert M. Love, összehasonlítva a Windows Vista-t a Linux kernel saját megoldásaival. A blogbejegyzése itt.

Hozzászólások

Azért ez nagyon gáz, beletenni egy bedrótozott limitet a hálózati driverbe, hogy ne legyen sok megszakítás ami kikészítené a multimédia lejátszás sebességét, mert roszul tervezték meg a hálózati drivert keretet és sokáig tart a megszakítás kezelés.
--
A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station

Első közelítésben azt mondanám defectivebydesign

Másodikra azt, hogy a kritikusok kicsit túlreagálják a dolgot. Ha nem hálózaton akarunk DVD-t nézni, akkor ez a probléma soha nem jön elő.

Harmadszorra meg azt, hogy lehet, hogy az a 10 csomag / ms mégiscsak kevés lesz on-line játékok közben. Gondolom a játékok a multimedia API-n keresztül szintén használják azt a bizonyos MMCSS service-t.

ui.: during Vista development showed that, even with thread-priority boosting, heavy network traffic can cause enough long-running DPCs (késleltetett eljáráshívások) to prevent playback threads from keeping up with their media streaming requirements, resulting in glitching

Azért ez gáz, még ha ritkán jön is elő. A Linux most dobott ki egy O(1) ütemezőt. Használtan nem kell a M$-nak?

Azert azt ne felejtsuk el, hogy az interruptkezeles es az utemezes nem fuggetlen egymastol. Gyakran egy interruptban atvett adatot pl egy Work Queue dologzza fel, amit az utemezo utemez. Ez azert van, mert igy nem az interrupton belul kell idoigenyes feladatokat elvegezni, javul a rendszer megszakitas valaszideje.

inkább a Ms-nek nincs fogalma arról hogy mi az interrupt-kezelés feladata, ha képesek úgy megírni a hálózati interface megszakításkezelő részét hogy egy hálózati másolás >40% prociidőt eszik...

ja, és azzal mentegetőznek hogy a TCP csomagokat kell ellenőrizni a megszakításkezelőnek... lol

g://keywords: tcp copy offload, tcp checksum offload

egyaltalan van fogalmad rola, mi az utemezo feladata?

erre pedig:

Talán mert normálisabb az interruptkezelés és az ütemező is?

Ott volt az 'és'; ez az én értelmezésemben azt jelenti hogy nem ugyanaz a kettő. Elnézést ha nem fogalmaztam szabatosan. A személyeskedő vitát amúgy nem komálom.

ha jól tudom (FIXME), a vista-t az ms-röl töltöd le, akkor 30napig haszálhatod

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.
debian 4.0 - linux-2.6.22.3-pancs1-wifi1 - 2.6.22.3 kernel madwifivel itt

A másodikhoz: otthoni felhasználásnál ritkábban jön elő valóban, de vállalatoknál azért más a helyzet (termelékenység rovására megy hogy a kollega zenét akar hallgatni munka közben). Azért valljuk be hogy már egy P2/P3 szintű gépnél sem okoz problémát a 100Mbit + mp3 ha értelmes OS van rajta...

Érdekes egyébként az összevetés nyílt forrású fejlesztőcsapattal: itt a hálózati réteg és multimédia-ütemező csapatok egymás 'ellenfelei', nem is kommunikáltak egymással. Egy opensource esetben ilyet meg se mernének tenni, esetleg kifejezetten opcionálisan és a felhasználó által beállítható módon.

Amúgy meg a fix korlát is vicces, ez mutatja hogy mennyire ad-hoc dolgokat tettek bele rendes tervezés helyett. Az igazi probléma azonban az újraírt komplett hálózati réteg lassúsága, ezt akár még rá is foghatják a driver gyártókra ha akarják :)

Ha nem hálózaton akarunk DVD-t nézni, akkor ez a probléma soha nem jön elő.
Ezen még gondolkozz el egy kicsit..

Harmadszorra meg azt, hogy lehet, hogy az a 10 csomag / ms mégiscsak kevés lesz on-line játékok közben.
LOL... Mi nem elég? A <1ms latency? Vagy netán a ~15MB/s atviteli sebesség?

lássuk csak... például ha a háttérben emailkliensre éppen rátör a nézhetnék és remek kis párbájtos csomagokkal elfogyaszt a 10-ből 3-at mondjuk pár másodpercig? És ha ugyanezt megcsinálja két szerverrel akkor már csak 4 csomag / ms marad, stb stb.

a 15Megabájt/s az erősen elméleti maximum. átlagos alkalmazási protokoll esetén hasznos payloadra, átlagos csomagmérettel számolva maximum ennek a fele igaz.

Hülyeségeket te írsz itt:
Mi nem elég? A <1ms latency? Vagy netán a ~15MB/s atviteli sebesség?

Lássuk be, hogy a kettőből egyiknek sincs semmi köze a 10 csomag/ms korláthoz!

1. Ha a játék ms-onként 1, vagy 2 csomagot nem tud elküldeni, akkor a latency 1 mp végére 100, vagy 200 ms lesz. Hálózatos FPS játékban 100ms már sok, 200ms kifejezetten idegesítő.
És ekkor még csak 2 játékos van (ld. később).

2. A 15MB/s pedig csak 1500 byte-os csomagokra igaz 1500-as MTU mellett. Ha egy játék kisebb csomagokból szeretne sokat küldeni, akkor nem használja ki a teljes sávszélességet, mégis beszaggat.

3. amugy meg erdekes modon a ket es fel megabites adsl modemem segitsegevel nagyon szuperul tudok online jatszani,
Irreleváns. Nem nálad fut a szerver. Hiába van gigabites hálókártyád, ha a te gépeden fut a szerver, és 10 kolégáddal játszol, akkor már csak 1 csomag/ms jut mindenkinek.
Dedikált szervernél megint nincs gond, mert az nem zenél játék közben.

4. Azt írtam: lehet. Azaz lehet, hogy ez előbb-utóbb gond lesz. Ellenben nem hiszem, hogy pillanatnyilag problémát jelentene, mert a M$ helyében úgy lőttem volna be a csomagokra vonatkozó korlátot, hogy a jelenleg kapható játékokat ne zavarja.

""Mi nem elég? A <1ms latency? Vagy netán a ~15MB/s atviteli sebesség?"

Lássuk be, hogy a kettőből egyiknek sincs semmi köze a 10 csomag/ms korláthoz!"

Ezt valahogy nem tudom belátni: azt viszont igen, hogy 10 csomag/ms-nál a throughput nem tud 15MByte/secnél nagyobb lenni.

"1. Ha a játék ms-onként 1, vagy 2 csomagot nem tud elküldeni, akkor a latency 1 mp végére 100, vagy 200 ms lesz. Hálózatos FPS játékban 100ms már sok, 200ms kifejezetten idegesítő.
És ekkor még csak 2 játékos van (ld. később)."

Na ez érdekes: hogyan is jutottál erre a következtetésre? Miért is lenne a latency 1mp végére 100, 200 ms?
Bárhogy is számolom: nem 100usec lesz, hanem több, de mindenesetre még mindig 1 ms alatt.

"3. "amugy meg erdekes modon a ket es fel megabites adsl modemem segitsegevel nagyon szuperul tudok online jatszani,"
Irreleváns. Nem nálad fut a szerver. Hiába van gigabites hálókártyád, ha a te gépeden fut a szerver, és 10 kolégáddal játszol, akkor már csak 1 csomag/ms jut mindenkinek.
Dedikált szervernél megint nincs gond, mert az nem zenél játék közben."

Ha egy kicsi tapasztalatod lenne, akkor tudnád, hogy pl. a quake másodpercenként kiküldött csomagjainak a száma 10-es nagyságrendű. Ha 10-en játszunk, a szerveremen még mindig majdnem 100-as nagyságrendű csomag jut másodpercenként.
Amúgy meg miért futtatnék windowsos szervert? Pl. quakenél.

Akkor én is megkérdezem: miért kell hülyeségeket kiabálni az éterbe?

Hülyeségeket te írsz itt:
Mi nem elég? A <1ms latency? Vagy netán a ~15MB/s atviteli sebesség?

Lássuk be, hogy a kettőből egyiknek sincs semmi köze a 10 csomag/ms korláthoz!

Na akkor vagjunk bele. Elso pont. Latency. 10 csomag ms-kent. Ez elmeletileg 0.1 ms latency kifele, ha feltetelezzuk, hogy befele is ugyanannyi, akkor is 0.2 ms latency. Ez kisebb mint 1ms, tehat a 10 csomag/ms-nak eleg sok koze van az 1 ms-nal kisebb latency-hez.

Masodik. ~15MB/s atviteli sebesseg. 10 csomag/ms == 10000 csomag/s. Egy csomag maximalis merete kb. 1500 byte, ebbol kovetkezik, hogy az elmeleti max. atviteli sebesseg 10000 csomag/s * 1500 byte/csomag = 15000000 byte/s, ami megkozelitoleg 15MB/s.

Ez eddig ketto null javamra. Folytatjuk?

lassuk csak... ha valamelyik eke elszantja az optikai kabelt es pont ugyanakkor a nagymamam megbotlik, akkor en zold vagyok. kb. ennyi koze van amit mondtal a temahoz. ezredmasodpercenkent van 10 csomag... amugy meg erdekes modon a ket es fel megabites adsl modemem segitsegevel nagyon szuperul tudok online jatszani, mellettem levo kolleganal fut email kliens, firefox stb. itt meg te rinyalsz, hogy 100+ mbit nem eleg mert valami email kliensre rajon a nezhetnek???

15 MB/s elmeleti maximum? nehogy mar! lehidalok. itt gigabitrol van szo...

Nekem a kovetkezoket sikerult leszurni.
Pozitivum: van onkritikajuk (The hard-coded limit was short-sighted with respect to today’s systems that have faster CPUs)
Negativum: a problemat (ti. a halozati driver tul sok procit hasznal) nem oldjak meg, hanem a tuneteket kezelik. (the networking team is actively working with the MMCSS team on a fix that allows for not so dramatically penalizing network traffic, while still delivering a glitch-resistant experience) - azaz tovabbra is a halozati forgalom korlatozasaban latjak a megoldast, nem pedig a driver kijavitasaban.

Ha jól olvastam, a 100 mbit-es hálózaton ELVILEG még nem jön elő a hiba, mert 15 mbyte/sec körüli a limit, a 100 mbit-es háló pedig úgyis csak 12 mbyte/sec-et tud.

Na de! Ha pl. 2 hálózati interfész van (laptopoknál gyakori lehet, a wireless miatt), akkor rögtön feleződnek a számok, és akkor már a 15 mbyte/sec-es limit az interfészenként 7.5-7.5 mbyte/sec-es limitet jelent. 3 hálózati interfésznél 5 mbyte/sec.

Amúgy azt jól olvastam (valahol), hogy ez a probléma az XP-nél még nem volt, ez "új feature"?

Na de! Ha pl. 2 hálózati interfész van (laptopoknál gyakori lehet, a wireless miatt), akkor rögtön feleződnek a számok, és akkor már a 15 mbyte/sec-es limit az interfészenként 7.5-7.5 mbyte/sec-es limitet jelent. 3 hálózati interfésznél 5 mbyte/sec.

Miért feleződik, harmadolódik? Mivan? Ez nekem új... link?

"A problémát tovább súlyosbítja egy apró hiba a hálózati driverkezelőben, mely több interfész esetén tovább osztja az erőforrásokat, még akkor is, ha csak egyetlen kapcsolat él. Ha rendelkezünk vezeték nélküli hálózati kapcsolattal, médialejátszás közben 10.000 helyett csak 8000 csomag juthat át a rendszeren másodpercenként, három vagy több csatoló esetén pedig akár 6000 alá is csökkenhet ez a szám. Másodpercenként 6000 csomag csak 9 MB-nyi adatot jelent, ami már 100 Mbit-es hálózatokon is feltűnhet."

ez nyílván a magyar fordításból származik

ezt nem teljesen értem
ez a hiba akkor is fenáll, ha helyi médiaállományokat játszik le a felhasználó?
ha igen, nem értem, miért lassul be tőle a háló, minek a korlátozás

'Everybody loves LEDs'

Ez kulonosen ugyes feature, ha a gepek vallalati kornyezetben, diskless modban pl.: iscsi-rol futnak! (megj: a gpxe tud windowst bootolni iscsi,aoe-rol is)

Jut eszembe! Ismeri itt valaki a Vista API-t? Ha jól tudom, az XP-s Win32 API-ban nem voltak szemaforok, csak Mutex-ek.
A Vista-ban már vannak szemaforok?

Megoldás az N verzió. :) Abban nincs mediaplayer. :)
Az is szép ahogy percekig rendereli a bélyegképeket a fotókezelő, de az csak önmagában tré, nem rendszerszinten. (A Microsoftnál kik csinálják a multimédiás alkalmazásokat?)