No ładnie…

Czytam sobie dzisiaj newsy z serwisu OSnews.pl i widzę takie coś:
Ponad 100% czasu CPU

O niskim poziomie większości polskich mediów wiem nie od dziś, ale od dziś chyba zacznę ograniczać listę serwisów internetowych z branży IT, które stanowią dla mnie źródło bieżących informacji. Do niektórych mam już poważne wątpliwości. Zastanawiam się, komu przyszło do głowy “120% czasu procesora”. Nie sądzę, żeby tego typu informacje były podawane przez firmę Adobe, podejrzewam, że jest to dziennikarska interpretacja. Moim zdaniem niedorzeczna. Chyba, że pojawiły się jakieś nowe jednostki czasu, tudzież nowa definicja procenta, o której nie wiem. Jeśli tak, bardzo proszę oświecić mnie w komentarzach.

Jak można poświęcać 120% czasu na coś? Czy jeśli pracuję 8 godzin dziennie, mogę powiedzieć, że jakieś zadanie wykonywałem przez 120% mojego czasu pracy? Czyli wykonywałem je przez 9,6 godziny. Ale przecież pracuję 8 godzin, czyli nie mogłem pracować 9,6 godziny. dochodzimy do sprzeczności. Czy dla kogoś doba ma więcej niż 24 godziny?Może ta różnica to właśnie te procenty ponad 100 ;) ? W informatyce, o ile wiem, czas liczy się w ten sam sposób jak w każdej innej dziedzinie. Współcześnie używane w większości komputerów systemy operacyjne to tzw. systemy z podziałem czasu. System operacyjny wyznacza pewne krótkie okresy, rzędu milisekund, które przydziela procesom (proces to program podczas działania) na to, by mogły być wykonywane przez procesor. Gdy procesor “nudzi się”, to jest, gdy wszystkie procesy wykorzystały swoje kwanty, aby zrobić to, co miały do zrobienia, system przydziela do wykonywania na procesorze tzw. proces bezczynności, który “wykonuje nic nie robienie” (w pewnym uproszczeniu). Fachowo nazywa się to instrukcja NOP - no operation. Zajętość procesora oznacza tak naprawdę ile czasu zajmowało nic nie robienie w stosunku do wykonywania procesów. Zajętość nigdy nie może wynosić 0, ponieważ cały czas wykonywany jest kod samego systemu operacyjnego, który chociażby zarządza wspomnianym przydzielaniem czasu. Zajętość może wynosić 100%, taka sytuacja ma miejsce wtedy, gdy jest dużo procesów, które intensywnie pracują i procesor nie spędził nawet ułamka chwili na nic nie robieniu. W takiej sytuacji krytycznym zadaniem systemu operacyjnego jest sprawiedliwy podział czasu, tak, aby wszystkie procesy dostały chociaż na króciutką chwilę szansę wykonania na procesorze i żeby żaden z nich nie “zawłaszczył” sobie całego czasu procesora blokując na przykład sam system operacyjny, który tym wszystkim zarządza. To jak zrealizować tę sprawiedliwość jest opisane w wielu opasłych księgach na temat teorii konstrukcji systemów operacyjnych, z których osobiście polecam Abraham Silberschatz “Podstawy systemów operacyjnych”. Mając takie wyobrażenie o działaniu komputera naprawdę trudno mi jest wyobrazić sobie, co może oznaczać powyższe 120% czasu. Utwierdza mnie to tylko w przekonaniu, że w tematyce związanej z komputerami jest coraz więcej pseudo-fachowców, którzy de facto nie mają pojęcia, o czym mówią.

Aktualizacja - 23.01.2011

W międzyczasie spotkałem się wyżej opisaną konwencją podawania wskaźnika użycia procesora. Okazuje się, że przyjmuje ona jako 100% pojedynczy procesor (rdzeń), więc gdy w systemie jest ich więcej, wynik może przekroczyć 100% w przypadku aplikacji które wykonują intensywne obliczenia wykorzystując wiele wątków/procesów. Konwencja ta jest używana np. przez Unix’owe narzędzie time. Poniżej przedstawiam wynik działania time’a dla specjalnego narzędzia zrównoleglającego wykonywanie skryptów: ppss.

$ /usr/bin/time ppss -d /opt/Adobe -c 'tar -cvjf ./adobe.tar.bz'
255.25user 440.59system 7:05.44elapsed 163%CPU (0avgtext+0avgdata 0maxresident)k
2992inputs+6384outputs (20major+9669583minor)pagefaults 0swaps

Tak więc moje zarzuty o bezsensowności okazały się trochę przedwczesne. Pierwszą część tego wpisu jednakże pozostawiam w niezmienionej postaci, ponieważ i tak uważam, że konwencja ta jest myląca, a oprócz tego ktoś z czytelników może mieć podobne spostrzeżenia i wątpliwości do moich, gdy zobaczy liczbę większą od 100%.