top
pokazuje średnie zużycie procesora w godzinach szczytu około 20%, podczas gdy monitorowanie CloudWatch pokazuje średnie zużycie procesora 40%. Co powoduje tę rozbieżność?
top
pokazuje średnie zużycie procesora w godzinach szczytu około 20%, podczas gdy monitorowanie CloudWatch pokazuje średnie zużycie procesora 40%. Co powoduje tę rozbieżność?
Odpowiedzi:
Bardzo dobra obserwacja i na to też wpadliśmy. Oto, co znalazłem:
Ostrożnie mierz zużycie procesora z poziomu instancji EC2. Możliwe jest zauważenie zużycia procesora znacznie poniżej 100% - a jednocześnie całkowite maksymalne wykorzystanie. Zaufaj mi: byłem tam, zrobiłem to. (Nawiasem mówiąc, CloudUatch CPUUtilization jest mierzony spoza instancji i zawsze jest poprawny.)
Tutaj jest bardzo dobry opis całości: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
W powyższym przykładzie instancji m1.small EC2 przydzielono 0,4 jednostki procesora, a więc 40% zajętości procesora oznacza procentowe zużycie bazowego rdzenia. Ponieważ jednak 40% to maksymalny udział procesora, który można przypisać do tej maszyny wirtualnej, efektywne użycie procesora wynosi 40% / 40% = 100%. Który jest liczbą wyświetlaną przez CloudWatch.
Jeśli zastanawiasz się, skąd pochodzi 40%, matematyka jest dość prosta. System linuksowy m1.small jest uprawniony do 1 jednostki obliczeniowej EC2, która zapewnia równoważną wydajność procesora 1,0–1,2 GHz 2007 Opteron lub 2007 Xeon. Ponieważ maszyna wirtualna działa na maszynie o taktowaniu 2,6 GHz, ma prawo do 38,4% - 46,2% udziału procesora w tym konkretnym węźle XEN. Możesz uruchomić komendę cat / proc / cpuinfo, aby dowiedzieć się o architekturze procesora za instancjami EC2.
Zwróć szczególną uwagę na wskazówkę, jak postępować z narzędziami, które nie wiedzą o specjalnej matematyce:
Inną opcją, która może być wykorzystana do modernizacji istniejących narzędzi monitorowania opartych na agencie lub SNMP, które nie integrują się z CloudWatch, jest użycie pomiaru bezczynności procesora. Wszystko, co musisz zrobić, to przepisać reguły, aby zmierzyć bezczynność procesora zamiast zajętości procesora. Np. Jeśli masz zdefiniowany> 75% próg dla zajętości procesora, utwórz regułę <25% dla bezczynności procesora. Jeśli bezczynność procesora wynosi 0, serwer jest związany z procesorem.
Bardzo prosta. Bardzo dobrze.
Podczas uruchamiania na górze w instancji EC2, mierzy ona użycie procesora przez fizyczny rdzeń, na którym działa instancja i inne. To użycie jest niepoprawne, jeśli chcesz mierzyć użycie procesora przez samą instancję (jednostka obliczeniowa EC2 przypisana do Twojej instancji).
Właśnie dlatego pomiary w chmurze są prawdziwe, ponieważ są mierzone na zewnątrz instancji dla jednostek obliczeniowych EC2 przypisanych tylko do Twojej instancji.
Zobacz tutaj - https://forums.aws.amazon.com/thread.jspa?threadID=99993