Dlaczego Docker zmniejsza zużycie energii w urządzeniu z Internetem rzeczy w tym teście?

10

Interesowałem się aplikacjami Dockera na urządzenia IoT, takie jak Raspberry Pis.

Po przeczytaniu Oceny wydajności technologii kontenerowych w urządzeniach Internetu przedmiotów , byłem nieco zdezorientowany jednym z wyników. W tabeli 1 zużycie energii pokazane w obszarze Benchmarking Apache 2 (200 klientów) pokazuje, że użycie kontenera Docker zmniejszyło zużycie energii, pomimo narzutu związanego z konteneryzacją przy użyciu Dockera.

Dlaczego tak się dzieje? Czy jest to wystarczająco niezawodne, aby można go było nieco zmniejszyć zużycie energii urządzeń IoT, i czy byłyby jakieś wady?

Aurora0001
źródło
1
Po przeczytaniu tabel na ostatniej stronie masz to trochę do tyłu. Zużycie energii jest przeważnie wyższe dla „Docker” niż „Native”. Tekst odnosi się do przypadku, w którym występuje również różnica wydajności (znajduje się w prawej dolnej ćwiartce tabeli I), prawdopodobnie ze względu na zwiększone wąskie gardło sieci dla kontenera, co stanowiłoby mniej aktywny procesor.
goldilocks,
@delicateLatticeworkFever może tak, patrzę na „5000 wniosków”, „25000 wniosków” i „100000 wniosków”, gdzie zużycie energii wynosi odpowiednio „-4,63%”, „-3,84%” i „-5,29%” . Różnica w wydajności wydaje się być prawdopodobną przyczyną różnicy mocy, którą warto omówić w odpowiedzi. Częścią mojego pytania jest to, czy mógłbyś wykorzystać to jako kompromis, gdybyś był zadowolony z nieco obniżonej wydajności, ponieważ wydawało mi się to interesującym pomysłem.
Aurora0001
1
Cóż, jeśli to dlatego, że te 5000 żądań trwało dłużej, oznacza to, że robienie rzeczy na poziomie mniejszym niż 100% oznacza mniej energii na użyte zadanie. To może być ogólna forma tego pytania i jako zwykłe przypuszczenie mogę powiedzieć, że ma to związek z energią traconą przez rozpraszanie ciepła. Czy (przynajmniej niektóre) procesory są mniej wydajne, gdy są maksymalnie? Może być łatwo. W takim przypadku, jeśli chcesz korzyści, możesz uruchomić testy z dławieniem procesora i zobaczyć, czy daje to tę samą przewagę (na pewno będzie działać wolniej i zużywa mniej energii). Uwaga na urządzeniu o mocy 5 W Nie jestem pewien, czy +/- <5% ma znaczenie.
goldilocks,
Note on a 5W device I'm not sure if +/- <5% is meaningful.- to dobry punkt, ale jeśli korzystasz z urządzeń IoT na dużą skalę, oszczędności energii stają się bardziej znaczące (i niezależnie od tego jest to interesujący eksperyment myślowy). Jeśli chcesz zebrać swoje myśli w odpowiedź, myślę, że poradzisz sobie z odpowiedzią na zadane przeze mnie pytania.
Aurora0001
1
Hmmm, nie jestem jednak pewien, czy moja szybka hipoteza jest poprawna; patrząc na to, wydaje się, że związek jest liniowy: stackoverflow.com/questions/6128960/ ... ... a nachylenie na tym wykresie wynosi <1, więc maksymalny procesor powinien być bardziej wydajny.
goldilocks,

Odpowiedzi:

7

Po dalszych badaniach uważam, że problem polega na tym, że chociaż moc (szybkość transferu energii) została zmniejszona, ogólne zużycie energii wzrosło dzięki zastosowaniu Dockera, więc nie ma korzyści w postaci obniżenia kosztów energii elektrycznej.

Na podstawie danych z artykułu dla 100 000 wniosków możemy obliczyć zużycie energii za pomocą wzoru:

Energia = moc x czas

Biorąc pod uwagę, że natywny kod zużywał 2,4893 W mocy i zajął około 170 sekund (patrz Rysunek 3, Native 200), wiemy, że wykorzystana energia to:

2,4893 W * 170 s

= 423,181 Ws = 423,181 J (1 wat na sekundę jest równoważny dżulowi, czyli innymi słowy, wat to dżul na sekundę)

W przypadku kodu Docker zużycie energii wyniosło 2,3642 W, ale zajęło to 220 sekund, więc:

2,3642 W * 220 s

= 520.124 Ws = 520.124 J

Zatem całkowite zużycie energii w tym przykładzie było o 96,943 J wyższe, co jest wyraźnie niepożądane, jeśli zużycie energii stanowi problem. Jednak korzystanie z Dockera ma inne zalety w zakresie wdrażania i zarządzania, ale w ściśle ograniczonych środowiskach (np. Tylko akumulatorowych) wydaje się, że najlepiej tego uniknąć.

Aurora0001
źródło