2013-05-03 12 views
6

W jaki sposób sen wykorzystuje zasoby procesora?Jak sen zjada CPU php

Czy używa 100% lub 0% procesora, gdy śpisz w scenariuszu. Możesz wytłumaczyć?

O ile wiem, zwiększa średnią obciążalność, ale w jaki sposób korzysta z procesora?

+2

To jest łatwe do przetestowania. Dwie konsole: jedna z twoim skryptem, druga z 'htop' lub' top' lub czymkolwiek w tym. Dlaczego tego nie próbowałeś? – Bojangles

+1

Zobacz sam https://github.com/php/php-src/blob/master/ext/standard/basic_functions.c#L4436 –

+0

Jeśli pytasz o to, czy używasz profilera procesora na nim , oto, co zwykle się dzieje. Masz mały program, który wchodzi w sen przez 10 sekund, powiedz. Więc czas jego zegara ściennego wynosi 10 sekund. Jednak potrzebna do tego ilość procesora mogła wynosić około 1 mikrosekundy, z czego 990 nanosekund można było wydać wchodząc i wychodząc ze snu. Tak więc z niewielkiej ilości czasu procesora, który jest używany, wynosi 99% w czasie snu. To dezorientuje wielu ludzi. –

Odpowiedz

14

Sposób, w jaki działa sleep zależy od systemu operacyjnego, ponieważ funkcja PHP sleepcalls into the appropriate runtime function faktycznie wykonuje to, co mówi na opakowaniu.

For Windows, ta funkcja to SleepEx. For other operating systems jest funkcją POSIX sleep. W obu przypadkach dokumentacja tych funkcji wyraźnie stwierdza, że ​​wątek spania nie może być uruchomiony podczas okresu uśpienia i dlatego nie może zużywać zasobów procesora, nawet gdyby chciał.

+0

Czy możesz również zamieszczać linki do tych dokumentacji? –

+0

W przypadku procesora Linux proces nie zużywa procesora: http://unix.stackexchange.com/questions/22886/do-sleeping-processes-get-tame-cpu-time/22887 – Alexey