[ Pobierz całość w formacie PDF ]
.11:./ahu@10.11's password:tc 100% |*****************************| 353 KB 00:00# tc -s qdisc ls dev eth0qdisc sfq 30: quantum 1514bSent 384228 bytes 274 pkts (dropped 0, overlimits 0)qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6msSent 2640 bytes 20 pkts (dropped 0, overlimits 0)qdisc sfq 10: quantum 1514bSent 2230 bytes 31 pkts (dropped 0, overlimits 0)qdisc prio 1: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1Sent 389140 bytes 326 pkts (dropped 0, overlimits 0)Widać, że cały ruch poszedł do uchwytu 30:, który identyfikuje pasmo z najmniejszym priorytetem, tak jakchcieliśmy.%7łeby sprawdzić, czy ruch interaktywny faktycznie trafia do wyższych pasm, wygenerujemy trochętakiego ruchu:# tc -s qdisc ls dev eth0qdisc sfq 30: quantum 1514bSent 384228 bytes 274 pkts (dropped 0, overlimits 0)qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6msSent 2640 bytes 20 pkts (dropped 0, overlimits 0)qdisc sfq 10: quantum 1514bSent 14926 bytes 193 pkts (dropped 0, overlimits 0)qdisc prio 1: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1Sent 401836 bytes 488 pkts (dropped 0, overlimits 0)Zadziałało - cały dodatkowy ruch trafił do 10:, która jest naszą kolejką o najwyższym priorytecie.%7ładen ruch nietrafił do niższych priorytetów, które otrzymały przed chwilą cały ruch wygenerowany przez `scp'.Sławna kolejka CBQTak jak wspomniano wcześniej, kolejka CBQ jest najbardziej skomplikowaną, tą o której jest najwięcej szumu ajednocześnie najmniej ludzi rozumie co robi i jak skonfigurować ją dokładnie tak jak chcemy.Nie dzieje się takdlatego, że autorzy byli złośliwi lub niekompetentni - przeciwnie, po prostu algorytm CBQ nie jest zbyt precyzyjny iniezbyt pasuje do sposobu w jaki działa Linux.Poza byciem kolejką z klasami, CBQ zajmuje się również kształtowaniem ruchu i to właśnie tego nie robi zbytdobrze.Powinna pracować w ten sposób: jeśli chcesz ograniczyć ruch 10mbit/s do 1mbit/s, łącze powinno być przez90% bezczynne.Jeśli nie jest, musimy je dławić by BYAO w 90% czasu faktycznie bezczynne.Jest to raczej trudne do zmierzenia, więc CBQ pobiera czas bezczynności z ilości mikrosekund pomiędzywywołaniami sprzętowymi o więcej danych.Po połączeniu tych informacji, CBQ aproksymuje jak bardzo łącze jestzajęte.Nie jest to raczej ostrożne i nie zawsze prowadzi do poprawnych rezultatów.Na przykład, jaka jest prędkość łącza nainterfejsie, który nie potrafi wysłać pełnych 100mbit/s danych - być może z powodu zle zaimplementowanegosterownika? Karty sieciowe PCMCIA również nigdy nie osiągają 100mbit/s ponieważ nie projektowano do tego tejszyny i ponownie - jak skalkulować czas bezczynności?Robi się jeszcze gorzej, jeśli rozważymy trochę nietypowe urządzenia sieciowe, takie jak PPP ponad Ethernetem czyPPTP ponad TCP/IP.Efektywna przepustowość w tym przypadku to tak naprawdę miara tego jak dobrze działająrurki (ang.pipe) do przestrzeni użytkownika - a działają bardzo wydajnie.Ludzie, którzy prowadzili pomiary stwierdzili, że CBQ nie zawsze jest bardzo dokładne a czasami w ogóle podajenieadekwatne rezultaty.W większości wypadków, działa jednak dobrze.Z dokumentacją, którą masz w ręku, powinieneś porawdzić sobie zeskonfigurowaniem jej tak, by działała dobrze.Szczegóły kształtowania ruchu przez CBQTak jak wcześniej napisano, CBQ dba cały czas o to, by łącze było przez odpowiedni czas bezczynne i dzięki temuprawdziwa przepustowość spadła do skonfigurowanej wielkości.%7łeby to robić kalkuluje czas, który powinienupłynąć pomiędzy kolejnymi pakietami.W czasie pracy, efektywny czas bezczynności mierzony jest za pomocą wykładnika ważonego średniego przesyłu(ang.exponential weighted moving average, EWMA), który traktuje świeże pakiety jako wykładniczo ważniejsze niżstarsze.Tak samo kalkulowany jest poziom załadowania stacji uniksowych.Wyliczony czas bezczyności odejmowany jest od wartości wyliczonej przez EWMA i wynik nazywa się średnimczasem bezczynności - `avgidle'
[ Pobierz całość w formacie PDF ]