Tuesday 28 November 2017

Ruch średnia kolejka


Jeśli wykonanie tego kodu jest krytyczne, to może mieć sens, aby uniknąć alokacji Heap dla Candle Myślę, że najbardziej rozsądny sposób to zrobić Candle w struct. Though mutable rodzaje wartości są złe, tak I refactor Candle do być niezmienna Oznacza to również, że implementacja latestCandle musiałaby się zmienić, prawdopodobnie na parę podwójnych pól lub, alternatywnie, na osobną, zmienną i możliwą do zresetowania klasę. Nie widzę żadnych innych potencjalnych problemów z wydajnością w kodzie, ale jeśli chodzi o wydajność , zawsze powinieneś polegać na profilowaniu, a nie swojej czy innej czy innej intuicji. Poza tym, nie lubię niektórych nazw własnych metod Specifically. ValueUpdated Nazwy metod powinny zazwyczaj być w formie zrobić coś, a nie coś się stało Więc myślę, że lepsze imię byłoby UpdateValue. Add Modyfikuj Są to dwie podstawowe operacje MovingAverage i myślę, że te nazwy don t wyraŜają sens dobrze I nazwałbym je coś jak MoveAndSetCurrent i SetC urrent respectively Chociaż takie nazewnictwo wskazuje, że podstawową operacją raczej powinna być Move and SetCurrent. I mam naukowy program datalogging, który rozwijałem od kilku lat Teraz musimy dodać pewną funkcjonalność, tak aby produkowała ona średnią ruchomej zbierane dane Mogę utworzyć kolejkę myDataClass, aby wykonać bufor fifo, ale zastanawiałem się, co najlepszym sposobem na uśrednianie może być Jak widać z poniższego przykładu code myDataClass zawiera różne struktury danych, z których niektóre mogą być uśrednione, a niektóre który nie może np. string. The główne pytanie jest czy jest łatwy sposób na osiągnięcie tego lub muszę napisać kod do średniej każdego elementu wewnątrz myDataClass lub należy redesign myDataClass Thanks. Tuesday, 12 lipca 2017 9 14 AM. Personnaly , Chciałbym utworzyć Class DataQueue MyDataClass, które dequeue się, jeśli liczba w kolejce przekazać 10 elementów W ten sposób nigdy nie będziesz musiał dbać o liczbę pozycji w kolejce fro m Twój kod, to zajmie się od wewnątrz kolejki class. Marked jako odpowiedź Mike Feng Moderator Moderatorzy środa, 20 lipca 2017 1 56 PM. Tajdzień, 12 lipca 2017 9 40 AM. Następniej trochę dochodzenia, Myślę, że znalazłem rozwiązanie dla Ciebie. Można użyć metody CopyTo, aby skopiować lewe elementy w kolejce do tablicy. By pamiętać, że nie obliczyłem średniej, pokazałem tylko, jak można uzyskać podstawę obliczeń, ale to po prostu dodaj własne obliczenia oparte na Twojej zasadzie biznesowej dla tego. Marek Feng: Moderator: środa, 20 lipca 2017 1 56 PM. Friday, 15 lipca 2017 5 16 AM. Na podstawie mojego zrozumienia, Twoim wymaganiem jest coś jak to. Jest to dane w queue. myDataClass1 datadbl 2 1 datastr someString1 dataarraydbl double array. myDataClass2 datadbl 3 5 dataastr someString2 dataarraydbl double array. myDataClass10 datadbl 9 1 dataastr someString10 dataarraydbl double array. Now, chcesz obliczyć średnia liczba datadbl feild w każdym obiekcie myDataClass i uzyskać średnią liczbę dataarraydbl feild. Jeśli więc sugeruję, abyś zrobił to samo, co sugerował Crazypenie zbudować nową klasę DataQueue. Mam nadzieję, że to pomoże, jeśli coś źle zrozumieję, proszę daj mi znać. Mike Feng MSFT Wsparcie społeczności MSDN Informacje zwrotne do nas Uzyskaj lub zażądaj kodu Przykład z firmy Microsoft Proszę pamiętać, aby zaznaczyć odpowiedzi jako odpowiedzi, jeśli pomogą i odzniesz je, jeśli nie udzielą pomocy. Marked jako odpowiedź Mike Feng Moderator Środa, 20 lipca 2017 1 55 PM. Friday, 15 lipca 2017 3 33 AM. Cznam Cor, mogłabym to zrobić, ale myDataClass jest w zasadzie dość duży, a system dzienników może działać przez długi czas, więc jest to więcej skuteczny dla mnie do śmieci kopii klasy I don t faktycznie potrzebna do obliczania średniej kolejce wydawało się najłatwiejszym sposobem na osiągnięcie tego. My główne pytanie jest jednak, w jaki sposób średnia klasy takich jak ja dostaję uczucie, że będę potrzebować napisać kod, który robi to specifica lly dla każdego typu danych w klasie myDataClass. Public MyDataClass. Tuesday, 12 lipca 2017 10 40 AM. Zgodnie z moim zrozumieniem Twoje wymagania są takie jak to. To jest dane w kolejce. myDataClass1 datadbl 2 1 dataastr someString1 dataarraydbl a double array. myDataClass2 datadbl 3 5 datastr someString2 dataarraydbl double array. myDataClass10 datadbl 9 1 dataastr someString10 dataarraydbl double array. Now, chcesz obliczyć średnią liczbę datadbl feild w każdym obiekcie myDataClass i uzyskać średnią liczbę dataarraydbl feild Jeśli tak, sugeruję, abyś zrobił to samo, co sugerował Crazypenie zbudować nową klasę o nazwie DataQueue. Mam nadzieję, że będzie to pomocne, jeśli coś źle zrozumiałem, proszę mi dać znać. Mike Feng MSFT MSDN Community Support Informacje zwrotne do nas Uzyskaj lub zażądaj kodu Przykład z firmy Microsoft Proszę pamiętać, aby zaznaczyć odpowiedzi jako odpowiedzi, jeśli pomogą i odznaczają je, jeśli nie udzielą żadnej pomocy. Oznacza to odpowiedź Mike Feng Moderator środa , 20 lipca 2017 r. 1 55 PM. fr., 15 lipca 2017 3 33 AM. Użyj rozmiaru kolejki i przechowywania danych IO Metrics. There wydaje się być trochę zamieszania wokół średniej wielkości kolejki Jest to metryka zgłoszona przez iostat jako avgqu - sz Wydaje się, że błąd pojawia się, gdy iostat zgłasza różne avgqu-sz w dom0 i domU dla pojedynczego wirtualnego urządzenia blokowego VBD, podczas gdy inne metryki takie jak operacje na wejściu danych wejściowych na sekundę IOPS i przepustowość często wyrażane w MB s są takie same strona opisuje, co to właściwie oznacza i jak powinno być interpretowane. W każdym nowoczesnym systemie operacyjnym można równocześnie przesyłać kilka żądań do pojedynczego urządzenia magazynującego Ta praktyka zwykle pomaga kilku warstwom ścieżki danych lepiej działać, pozwalając systemom uzyskiwać wyższe liczby w danychach takich jak IOPS i przepustowość Jednak pomiar czasu przeciętnego zapotrzebowania na zaległe lub bliskie dla danego bloku przez pewien czas może być nieco trudny To dlatego, że liczba o f wybitne wnioski to natychmiastowy metryczny to znaczy, gdy spojrzysz, może wystąpić zerowa próba oczekująca na to urządzenie Gdy spojrzysz ponownie, może być 28 Bez dużej ilości rachunkowości i nieprzyjemności, nie da się powiedzieć, co się stało w większości. Większość użytkowników nie interesuje się wszystkim, co się stało między ludźmi Ludzie są znacznie bardziej zainteresowani średnimi zaległymi wnioskami Ta średnia daje dobre zrozumienie obciążenia pracą, tj. jak aplikacje korzystają z pamięci masowej i pomaga lepiej dostosować środowisko do lepszej wydajności. Kalkulowanie średniej wielkości kolejki. Aby zrozumieć, jak oblicza się średnią wielkość kolejki, zapoznaj się z poniższym schematem przedstawiającym system Linux z uruchomionym fio jako aplikacją użytkownika benchmarkingu, która wystawia żądania na dysk SCSI. Benchmark wydaje żądania dotyczące dysku. Aplikacja wydaje żądania do jądra za pośrednictwem bibliotek takich jak libc lub libaio. W prostym przypadku, gdy benchmark jest skonfigurowany z głębokością IO 1, fio spróbuje utrzymać jeden żądanie pływające przez cały czas. Gdy tylko jedno żądanie zakończy, fio wyśle ​​inny. Można to osiągnąć przez następujący plik konfiguracyjny, który działa przez 10 sekund i uważa dev xvdb as dysk testowy. Plik konfiguracyjny 1 fio dla testowego obciążenia pracy. NEST W tym eksperymencie dev xvdb został skonfigurowany jako RAW VDI Upewnij się, że w pełni wypełni VHD VDI przed uruchomieniem eksperymentów, zwłaszcza jeśli są one odczytywane. Jedna z dostępnych danych przez warstwę blokową dla urządzenia jest liczba odczytów i zapisów, które znajdują się w dokumentacji jądra Linux Kody te powodują, że ilość czasu na żądanie jest zajęta. Warstwa blokowa rozpoczyna tę księgowość bezpośrednio przed wysłaniem żądania do sterownika i zatrzymuje ją natychmiast po zakończeniu żądania Poniższy rysunek przedstawia ten czas w paskach poziomej RED i BLUE. Rysunek 2 Diagram reprezentujący rachunkowość żądania. Ważne jest, aby zrozumieć, że ta metryka może rosnąć szybciej niż czas To się stanie, jeśli jednocześnie złożono więcej niż jednego wniosku Na poniższym przykładzie nowy zielony wniosek został złożony przed pierwszym czerwonym żądaniem Ukończono po czerwonym żądaniu i po zakończeniu niebieskie żądanie zostało wydane W momentach, gdy żądania zostały nałożone, wskaźnik tików wzrastał w tempie większym niż czas. Rysunek 3 Diagram reprezentujący równoczesną rejestrację żądań. Jestem ostatnią postacią, jasne jest, że były momenty, w których nie pojawiły się żadne prośby sterownik urządzenia Były też momenty, w których jeden lub dwa żądania były obecne w sterowniku Aby obliczyć średnią liczbą żądań naświetlania lub średniej wielkości kolejki między dwoma momentami, narzędzia takie jak iostat będą próbować kleszcze w chwili jednej, próbki ponownie znów w momencie dwóch , i podzielić różnicę między tymi kleszczymi w przedziale czasowym pomiędzy tymi momentami. Rysunek 4 Wzór do obliczania średniej wielkości kolejki. Średnia wielkość kolejki w środowisku wirtualizowanym. W środowisku wirtualizowanym, datapath pomiędzy aplikacją benchmarkingu fio działającą wewnątrz maszyny wirtualnej a rzeczywistą pamięcią jest inna Zważywszy na przykład XenServer 6 5, na poniższym rysunku przedstawiono uproszczenie tego układu danych przykłady poprzedniej sekcji, żądania uruchamiają się w aplikacji wirtualnej maszyny użytkownika s Podczas przenoszenia przez jądro są one skierowane do parawirtualizowanych sterowników pamięci masowej PV np. blkfront zamiast rzeczywistego sterownika SCSI Te żądania są zbierane przez nośnik pamięci masowej tapdisk3 w dom0 s Przestrzeń użytkownika Są one przekazywane do jądra dom0 przez libaio, przekazują warstwę bloku i docierają do sterowników dysków dla odpowiedniej infrastruktury pamięci masowej w tym przykładzie, dysku SCSI. Graf 5 Benchmark wydający żądania w środowisku wirtualizowanym. opisane powyżej w celu obliczenia średniego rozmiaru kolejki będą powodować różne wartości w zależności od miejsca zastosowania pierścień diagramu powyżej, może być używany w warstwie bloku maszyny wirtualnej, w tapdisk3 lub w warstwie blokowej dom0 s Każda z nich wykazuje inny rozmiar kolejki i rzeczywiście oznacza coś innego Schemat poniżej rozszerza przykłady użyte w tym artykule w celu uwzględnienia tych warstw. Rysunek 6 Diagram reprezentujący rachunkowość żądań w środowisku wirtualizowanym. Powyższy rysunek zawiera prawie pionowe strzałki między warstwami reprezentującymi żądania odchodzące i przybywające do różnych elementów systemu Te strzałki są lekko ukośne, co sugeruje, że czas przechodzi w miarę przesuwania żądania z jednej warstwy do drugiej Jest też jakiś czas, jaki upłynął między strzałką docierającą do warstwy a nową strzałką opuszczającą tę warstwę. Kolejnym rysunkiem są poziome czerwone i niebieskie słupki Wskazują, gdzie zgłoszenia są rozliczane na określonej warstwie Uwaga że ta księgowość rozpoczyna się trochę czasu po otrzymaniu żądania na warstwę i na jakiś czas przed wysłaniem żądania do innej warstwy Th Te przesunięcia są jedynie przykładowe Szczegółowe spojrzenie na dane wyjściowe konkretnych narzędzi wykonawczych jest konieczne, aby zrozumieć, jaki jest średni rozmiar kolejki dla pewnych nakładów pracy. Przeprowadzenie rzeczywistej rozmieszczenia. W celu wprowadzenia rzeczywistych liczb w tym artykule, następujące środowisko został skonfigurowany. Stardard Dell PowerEdge R310.Intel Xeon X3450 2 67GHz 1 gniazdo, gniazdo 4 gniazda, HT Enabled. BIOS zarządzanie mocą ustawione na system operacyjny DBPM. Xen P-State Governor ustawione na wydajność, stan maksymalnego stanu bezczynności ustawiony na 1.2 x Western Digital WD2502ABYS . dev sda XenServer Dysk instalacyjny gościa instalacji. dev sdb LVM SR z jednym 10 GiB RAW VDI dołączonym do guest. dom0 XenServer Creedence Build Number 88873.domU Debian Wheezy x8664.Kiedy wydanie obciążenia fio zgodnie z tabelą 1 kolejno odczytuje 4 żądania KiB przy użyciu libaio i z zestawem jodu na 1 w ciągu 10 sekund wyświetla się ikona iStat w gronie gości. Wartość procentowa jest podana w kolumnie avgqu-sz Średnio wynosi ona średnio około 96, podczas gdy benchmark był uruchomiony Oznacza to, że warstwa blokady gościa odnosząca się do rysunku 6 prawie żąda żądań. Następną warstwą podsystemu pamięci masowej, który stanowi wykorzystanie, jest tapdisk3 Ta wartość może być osiągnięta z uruchomieniem xsource z opcją xensostat w dom0. W tym samym eksperymencie raportuje się następująco. Analogicznie do tego, co zostało zaobserwowane w obrębie gościa , xsiostat raportuje czas, w którym miał on zaległe żądania W tej warstwie liczba ta jest zgłaszana po około 0 71, podczas gdy benchmark był uruchomiony To daje pojęcie, że p assed pomiędzy żądaniem uwzględnionym w warstwie bloku gościa a domowym systemem dodatkowym W dalszej kolejności można uruchomić iostat w dom0 i sprawdzić, jakie jest postrzegane wykorzystanie w ostatniej warstwie przed wysłaniem żądania do urządzenia sterownika. At tej warstwie warstwa bloku raportuje o średniej wielkości kolejki około 0 61.Zalenie do głębokości IO. Następujące sekcje wyjaśniały, dlaczego użytkownicy mogli zobaczyć niższe wykorzystanie kolejki w dom0 podczas porównywania wydajności narzędzi wykonawczych w różnych warstwach podsystem pamięci masowej Przedstawione przykłady dotyczyły głównie sytuacji, w których głębokość IO jest równa 1 Oznacza to, że narzędzie benchmarku było uruchamiane w gronie gości, np. fio zawsze stara się utrzymywać jedno żądanie podmienia na zawsze To postrzeganie narzędzia, może być błędne zważywszy, że potrzeba czasu na uzyskanie rzeczywistego dostępu do infrastruktury pamięci masowej. Wykorzystując to samo środowisko opisane w poprzedniej sekcji i stopniowo zwiększając głębokość IO na poziomie odniesienia można skonfigurować następujące dane: Rysunek 7 Średni rozmiar kolejki i głębokość io, jak skonfigurowano w fio. Ten artykuł wyjaśnił, jaki jest średni rozmiar kolejki i jak obliczany jest jako przykłady zawiera rzeczywiste dane z określonego serwera i typów dysków powinien wyjaśnić, dlaczego niektóre obciążenia powodują, że od kolejnego gościa i od domostwa są postrzegane różne kolejki. Pozdrawiam mnie na twitter franciozzy Jestem inżynierem wydajności oprogramowania pracującym dla Citrix od października 2017 r., a dokładniej na XenServer Storage Virtualisation Poprzednio ukończyłam pracę doktora w Imperial College w Londynie na tej samej tematyce Jeśli chodzi o obliczenia i oprócz oceny wydajności wirtualnej pamięci masowej, moje zainteresowania obejmują również sieci komputerowe, systemy rozproszone i wysokiej wydajności, aby wymienić tylko kilka W wolnym czasie lubię grać na gitarze basowej, ćwiczyć Kyokushin Karate i robiąc zbliżoną magię Oh, i grając w pokera i szachy. Ostatnie posty. Rekordy, 25 maja 2018 r en Wirtualizowany Magazyn jest szybszy niż Bare Metal. Wednesday, 03 Grudnia 2017 Średni rozmiar kolejki i Magazynowanie IO Metrics. Wednesday, 02 lipca 2017 Ulepszenia dotyczące wydajności pamięci masowej XenServer i Tapdisk3.Trudzień, 31 grudnia 2017 r. Projekt Karcygwins i Wirtualizacja pamięci masowej. W dniu 1 października 2017 VM Density i Project Pulsar. Tobias Kreidl w środę, 3 grudnia 2017 r. 19 17.Zamówienie Felipe w tak bardzo wnikliwym artykule z takim przypadkiem, gdy zaczyna się zbliżać do 100 parametru util, oznacza to nasycenie, więc poza tym, że dzieląc część tego magazynu na inne urządzenie, jakie zalecenia podasz w celu dostosowania głębokości kolejki dla konkretnych urządzeń Z niektórymi, takimi jak urządzenia SCSI lub HBA, można manipulować głębokością kolejki, zobacz np. , ale w przeciwieństwie do czegoś w VMware, np. esxtop, nie znam żadnego narzędzia na Xenserver, aby móc monitorować kolejki. Z pozdrowieniami, Tobiasza. ipe, w przypadku bardzo wnikliwego artykułu W przypadku, gdy parametr util zaczyna się zbliżając do 100, byłby to wskazanie nasycenia, a więc poza dzieleniem części tego magazynu na inne urządzenie, jakie rekomendacje zaleciłbyś w celu dostosowania głębokości kolejki dla konkretnych urządzeń Z niektórymi, jak urządzenia SCSI lub HBA, można manipulować głębokością kolejki, na przykład patrz, ale w przeciwieństwie do czegoś w VMware, np. esxtop, nie znam żadnego narzędzia na Xenserver, aby móc monitorować kolejkę głębokie Z pozdrowieniami, - Tobias. Felipe Franciosi we wtorek, 16 grudnia 2017 r. 19 20. Podziękowania dla pytania i przeprosin za opóźnienie w odpowiedzi Kolumna util zbliżająca się do 100 oznacza normalnie, że urządzenie jest zajęte przez większość czasu zgodnie z mechanizmami księgowymi Wyjaśniłem w temacie Ważne jest podkreślenie, że nie oznacza to, że urządzenie nie będzie mogło być szybsze, na przykład z większymi żądaniami lub większą głębokością kolejki zadań. Rozpoczęcie pracy z Cree xsiostat poinformuje średnią wielkość kolejki oddzielając odczyt i zapis Możesz użyć tego w połączeniu z iostatem w gronie i dom0 do wypracowania, jeśli twój system mógłby korzystać z tuningu, takich jak dostosowanie maksymalnej głębokości kolejki dla konkretnych sterowników pamięci masowej. powinien dobrze działać w większości przypadków biorąc pod uwagę wymianę między czynnikami takimi jak pamięć i wydajność procesora. Powiedziawszy, że trudno jest wydawać zalecenia, które są zbyt ogólne, ponieważ zazwyczaj występuje wiele różnych elementów, przyglądałbym się każdemu przypadkowi indywidualnie i doświadczeniu gdzie jest to wskazane. Mam nadzieję, Felipe. Hi Tobias, dzięki za pytanie i przeprosiny za opóźnienie w odpowiedzi Kolumna util zbliżająca się do 100 oznacza normalnie, że urządzenie jest zajęte przez większość czasu zgodnie z mechanizmami rachunkowości, które wyjaśniono w temacie ważne jest, aby podkreślić, że nie oznacza to, że urządzenie nie będzie mogło być szybsze, na przykład z większymi żądaniami lub większą głębokością kolejki zadań Zaczynając od Cr eedence, xsiostat poinformuje średnią wielkość kolejki oddzielającą odczyt i zapis Możesz użyć tego w połączeniu z iostat w gronie i dom0 do wypracowania, jeśli system może używać tuningu, np. dostosowanie maksymalnej głębokości kolejki dla określonych sterowników pamięci masowej. dobrze sprawdzają się w większości przypadków biorąc pod uwagę wymianę między czynnikami takimi jak pamięć i wydajność procesora. Powiedziawszy, że trudno jest tworzyć zalecenia, które są zbyt ogólne, ponieważ zazwyczaj występuje wiele różnych elementów, przyglądałbym się każdemu przypadkowi indywidualnie i eksperymentowałem odpowiednia Nadzieja, która pomaga, Felipe. Oczekujemy, że całkowite koszty infrastruktury serwerowej zostaną zmniejszone o ponad 35 lat z powodu XenServer. Michael Markl Global Service Właściciel usług komunikacyjnych SAP Infrastructure Services, SAP AG. Maszyny wirtualne są częścią kultury zarządzania informatycznego Grupo Martins, ponieważ czas potrzebny do utworzenia z XenServer wynosi około 20 minut. Flavio Lucio Borges Martins da Silva CIO Grupo Martins. Naszym zadaniem jest jak największe zaspokojenie potrzeb wszystkich wydziałów, dlatego musieliśmy znaleźć rozwiązanie, które może obsługiwać dużą liczbę aplikacji, a także oszczędzać przestrzeń pamięci i zasoby personelu. Tam, gdzie Citrix przystąpił do komercyjnego wsparcia. i usługi od Citrix Możemy pomóc w instalacji, pomocy technicznej i optymalizacji XenServer Kontakt Citrix. About XenServer. XenServer jest wiodącą platformą wirtualizacji platformy open source, zasilaną przez hypervisor projektu Xen i pasek narzędzi XAPI Jest używany w największych światowych chmurach i przedsiębiorstw.

No comments:

Post a Comment