Nie na pewno, ale głównie na 1.00*n_cpu
.
Obciążenie oznacza, że: jeśli w systemie z jednym procesorem jest wiele procesów, działają one pozornie równolegle. Ale to nieprawda. Co praktycznie się dzieje: jądro daje procesowi 1/100 sekundy, a następnie przerywa jego działanie przerwaniem. I daje następną 1/100 sekundy innemu procesowi.
Praktycznie pytanie, „który proces powinien otrzymać nasz następny 1/100 sekundy?”, Zostanie rozstrzygnięte przez złożoną heurystykę. Jest on nazwany jako zadania harmonogramu .
Oczywiście procesy, które są zablokowane, na przykład czekają na dane, które odczytują z dysku, są zwolnione z tego harmonogramu zadań.
Co mówi obciążenie: ile procesów oczekuje obecnie na następne 1/100 sekundy. Oczywiście jest to wartość średnia. Wynika to z faktu, że możesz zobaczyć wiele liczb w cat /proc/loadavg
.
Sytuacja w systemie z wieloma procesorami jest nieco bardziej złożona. Istnieje wiele procesorów, których ramy czasowe można przypisać do wielu procesów. To sprawia, że planowanie zadań jest nieco - ale nie za bardzo - skomplikowane. Ale sytuacja jest taka sama.
Jądro jest inteligentne, stara się współdzielić zasoby systemowe w celu uzyskania optymalnej wydajności, i jest to bliskie (istnieją pewne drobiazgi związane z optymalizacją, na przykład lepiej, jeśli proces będzie uruchamiany możliwie najdłużej w tym samym czasie procesora ze względu na względy buforowania, ale nie mają one znaczenia). Wynika to z faktu, że jeśli mamy ładunek 8, oznacza to: w rzeczywistości 8 procesów czeka na następny wycinek czasu. Jeśli mamy 8 procesorów, możemy nadać te przedziały czasu procesorowi jeden na jeden, dzięki czemu nasz system będzie optymalnie wykorzystywany.
Jeśli widzisz a top
, możesz zobaczyć, że liczba faktycznie działających procesów jest zaskakująco niska: są to procesy oznaczone przez R
nie. Nawet w niezbyt trudnym systemie jest często poniżej 5. Jest to częściowo spowodowane tym, że procesy oczekujące na dane z dysków lub z sieci są również zawieszone (oznaczone symbolem u S
góry). Obciążenie pokazuje tylko użycie procesora.
Istnieją również narzędzia do pomiaru obciążenia dysku, imho powinny one być co najmniej ważne jako monitorowanie użycia procesora, ale jakoś nie jest to tak dobrze znane w naszym profesjonalnym świecie sysadmin.
Narzędzia Windows często dzielą obciążenie z rzeczywistą liczbą procesorów. Powoduje to, że niektórzy profesjonalni administratorzy systemu Windows używają obciążenia systemu w tym sensie podziału na procesory. Nie mają racji i prawdopodobnie będą szczęśliwsi po tym, jak im to wytłumaczysz.
Procesory wielordzeniowe to praktycznie wiele procesorów na tym samym chipie krzemowym. Nie ma różnicy.
W przypadku procesorów hyperthreaded występuje ciekawy efekt uboczny: ładowanie procesora powoduje spowolnienie jego par hyperthreaded. Ale dzieje się to na głębszej warstwie, co obsługuje normalne planowanie zadań, chociaż może (i powinno) wpływać na decyzje harmonogramu dotyczące przenoszenia procesów.
Ale z naszego obecnego punktu widzenia - co determinuje obciążenie systemu - nie ma to również znaczenia.