bup-memtest - przetestuj statystyki użycia pamięci bubu
bup memtest [options...]
bup memtest otwiera listę indeksów pakietów w repozytorium bup, a następnie przeszukuje listę w poszukiwaniu serii nieistniejących obiektów, wyświetlając statystyki użycia pamięci po każdym cyklu.
Ze względu na sposób, w jaki działają systemy uniksowe, dane wyjściowe zwykle pokazują dużą (i niezmienną) wartość w kolumnie VmSize, ponieważ mapowanie plików indeksu w pierwszej kolejności zajmuje pewną ilość wirtualnej przestrzeni adresowej. Jednak to użycie pamięci wirtualnej jest całkowicie wirtualne; nie zajmuje żadnej pamięci RAM. Z biegiem czasu bup wykorzystuje części indeksów, które trzeba ładować z dysku, co powoduje wzrost w kolumnie VmRSS.
ustawić liczbę obiektów do wyszukania w każdym cyklu (tj. przed wydrukowaniem linii wyjścia)
ustawić liczbę cykli (tj. liczbę linii wyjścia po pierwszej). Pierwsza linia wyjścia to zawsze 0 (tj. linia bazowa przed wyszukiwaniem jakichkolwiek obiektów).
zignoruj wszelkie pliki .midx utworzone przez bup midx. Pozwala to porównać wydajność pamięci z użyciem midx i bez niego.
szukaj istniejących obiektów zamiast szukać przypadkowych nieistniejących. Może to znacznie wpłynąć na użycie pamięci i wydajność. Zauważ, że przez większość czasu bup save spędza większość czasu na wyszukiwaniu nieistniejących obiektów, ponieważ istniejące są prawdopodobnie w niezmodyfikowanych plikach, których i tak nie będziemy próbować tworzyć kopii zapasowych. Tak więc domyślne zachowanie dokładniej odzwierciedla rzeczywistą wydajność wzmocnienia. Ale i tak możesz chcieć skorzystać z tej opcji, aby upewnić się, że wyszukiwanie istniejących obiektów nie stało się znacznie gorsze niż wcześniej.
$ bup memtest -n300 -c5
PackIdxList: using 1 index.
VmSize VmRSS VmData VmStk
0 20824 kB 4528 kB 1980 kB 84 kB
300 20828 kB 5828 kB 1984 kB 84 kB
600 20828 kB 6844 kB 1984 kB 84 kB
900 20828 kB 7836 kB 1984 kB 84 kB
1200 20828 kB 8736 kB 1984 kB 84 kB
1500 20828 kB 9452 kB 1984 kB 84 kB
$ bup memtest -n300 -c5 --ignore-midx
PackIdxList: using 361 indexes.
VmSize VmRSS VmData VmStk
0 27444 kB 6552 kB 2516 kB 84 kB
300 27448 kB 15832 kB 2520 kB 84 kB
600 27448 kB 17220 kB 2520 kB 84 kB
900 27448 kB 18012 kB 2520 kB 84 kB
1200 27448 kB 18388 kB 2520 kB 84 kB
1500 27448 kB 18556 kB 2520 kB 84 kB Pierwszym celem podczas optymalizacji indeksowania bup jest utrzymanie rozsądnie niskiego VmRSS. Jednak w końcu może być konieczna zamiana wszystkich indeksów, po prostu dlatego, że szukasz wielu obiektów, a to spowoduje, że Twój RSS wzrośnie do wielkości VmSize.
Kluczowym słowem jest tutaj w końcu. Tak długo, jak VmRSS rośnie w miarę wolno, ilość aktywności na dysku spowodowanej dostępem do indeksów pakietów jest stosunkowo niewielka. Jeśli rośnie szybko, bup prawdopodobnie spędzi większość czasu na wymianie danych indeksu z dysku zamiast na wykonywaniu kopii zapasowej, więc kopie zapasowe będą działać bardzo wolno.
Celem bup memtest jest pokazanie, jak szybko rośnie zużycie pamięci, oraz pomoc w optymalizacji bup w celu lepszego wykorzystania pamięci. Jeśli masz problemy z pamięcią, możesz zostać poproszony o przesłanie danych wyjściowych programu bup memtest, aby pomóc w zdiagnozowaniu problemów.
Wskazówka: spróbuj użyć bup midx -a lub bup midx -f, aby sprawdzić, czy pomaga to zmniejszyć zużycie pamięci.
Ciekawostka: użycie pamięci indeksu w bup (lub git) jest tak naprawdę problemem tylko przy dodawaniu dużej liczby wcześniej niewidzianych obiektów. Dzieje się tak dlatego, że dla każdego obiektu musimy bezwzględnie potwierdzić, że nie ma go już w bazie danych, co wymaga od nas przeszukania wszystkich istniejących indeksów pakietów, aby upewnić się, że żaden z nich nie zawiera obiektu w pytanie. W bardziej oczywistym przypadku wyszukiwania obiektów, które nie istnieją, poszukiwane obiekty są zwykle w jakiś sposób powiązane, co oznacza, że prawdopodobnie wszystkie istnieją w niewielkiej liczbie plików pakietów, więc zużycie pamięci będzie ograniczone tylko do tych indeksów pliku packfile.
Ponieważ użytkownicy git zwykle nie dodają wielu plików za jednym razem, git tak naprawdę nie potrzebuje programu takiego jak bup midx. Z drugiej strony bup spędza większość czasu na tworzeniu kopii zapasowych plików, których wcześniej nie widział, więc jego wzorce wykorzystania pamięci są inne.
bup-midx(1)
Część pakietu bu(1).
Avery Pennarun