W jaki sposób mogę się dowiedzieć, jak duża jest tabela stron procesu systemu Linux, wraz z innymi rachunkami procesów o zmiennej wielkości?Jak znaleźć lub obliczyć rozmiar tabeli stron procesu Linux i inne metody księgowania jądra?
Odpowiedz
Jeśli jesteś naprawdę zainteresowany w tabelach stronie, zrobić
$ cat /proc/meminfo | grep PageTables
PageTables: 24496 kB
Jest to przydatne, ale muszę się dowiedzieć, czy ten rozmiar jest "zbyt duży". Jeśli istnieje ograniczenie dla tego rozmiaru, które wywoła fork(), aby zawieść, i jak blisko tego ograniczenia jest jądro. Idealnie byłoby również dowiedzieć się, jaka część tego rozmiaru PageTables jest używana przez konkretny proces, tak, że gdy fork() spróbuje skopiować tabele dla tego procesu, limit zostanie przekroczony. –
Hmmm, z powrotem w Ye Olden Tymes, zwykliśmy nazywać nlist (3), aby otrzymać adres systemu dla danych Byliśmy zainteresowani w, a następnie otwórz/dev/kmem, wyszukaj adres, a następnie odczytaj dane. Nie wiem, czy to działa w Linuksie, ale warto byłoby wpisać "man 3 nlist" i zobaczyć, co wróci.
Powinieneś opisać swój problem, a nie pytać o szczegóły. Jeśli za dużo rozwidlasz (szczególnie w przypadku procesu, który ma dużą przestrzeń adresową) są wszelkiego rodzaju rzeczy, które idą źle (w tym z pamięci), trafienie maksymalnego rozmiaru strony jest IMHO nie realistycznym problemem.
Thad powiedział, że byłbym również zainteresowany przeczytaniem udziału procesu w Linux.
Jako prostą regułę można jednak przyjąć, że każdy proces powoduje udział w działce, który jest równy jego wirtualnemu rozmiarowi, na przykład 6 bajtów dla każdej strony. Na przykład, jeśli masz bazę danych Oracle z 8 GB SGA i 500 procesami, które ją udostępniają, każdy proces będzie używał stronicowania o wielkości 14 MB, co daje 7 GB stron + 8 GB SGA. (przykładowe numery od http://kevinclosson.wordpress.com/2009/07/25/little-things-doth-crabby-make-%E2%80%93-part-ix-sometimes-you-have-to-really-really-want-your-hugepages/)
Oh BTW, niektóre numery z ogromnymi stronami teraz: http://kevinclosson.wordpress.com/2009/07/28/quantifying-hugepages-memory-savings-with-oracle-database-11g/ – eckes
Od wersji 2.6.10, ilość pamięci wykorzystywana przez tabele stron w jednym procesie została ujawniona za pomocą pola VmPTE z /proc/<pid>/status
.
Wydaje się działać dobrze , z wyjątkiem sytuacji, gdy przydzielam wielkie strony przy pomocy mmap: podana wielkość jest małą stałą, niezależnie od wielkości przydziału (jądro 4.4.0-77). –
Wartość zgłaszana przez pole VmPMD wydaje się być w porządku, rośnie liniowo wraz z wielkością alokacji, nawet przy dużych stronach. Ale myślę, że nie uwzględnia on całej tabeli stron (mężczyzna mówi "Rozmiar tabel stron drugiego poziomu"). Podczas eksperymentowania ze stronami klasycznymi ta wartość jest około 500 razy mniejsza niż VmPTE. –
- 1. Przestrzeń jądra systemu Linux i przestrzeń użytkownika
- 2. Zarządzanie tabelami stron Linux i MMU
- 3. Jak obliczyć całkowity rozmiar niektórych plików tylko, rekurencyjnych, w linux
- 4. Porównaj tablice lub inne metody
- 5. Jak znaleźć rozmiar bufora gniazda linux
- 6. Jak zmienić rozmiar bufora i/o jądra
- 7. Jak uzyskać dokładny rozmiar pamięci współdzielonej procesu?
- 8. R dplyr oznacza wioskę lub min i inne metody?
- 9. Jak kodować moduł jądra Linux?
- 10. Jak znaleźć rozmiar linii pamięci podręcznej L1 z procesu Java?
- 11. Jak zmierzyć rozmiar stosu procesu?
- 12. Jak obliczyć wykorzystanie CPU procesu i wszystkich jego procesów podrzędnych w systemie Linux?
- 13. Jak obliczyć rozmiar pliku audio?
- 14. Jak wyłączyć tworzenie gniazda dla procesu Linux, dla piaskownicy?
- 15. Wyświetl opcje konfiguracji jądra Linux
- 16. stos jądra dla procesu linuxowego
- 17. Jak znaleźć rozmiar pamięci wirtualnej i rozmiar pamięci podręcznej systemu Linux?
- 18. jak obliczyć "Rozmiar" FormattedText lub GlyphRun w WPF?
- 19. Jak ograniczyć dostęp dla uprzywilejowanych użytkowników na poziomie jądra Linux?
- 20. Jak obliczyć rozmiar fragmentu tekstu w Win2D
- 21. dystrybucja dla rozwoju jądra Linux
- 22. Moduły jądra Linux - zagrożenie bezpieczeństwa?
- 23. Zwiększyć bufor jądra Linux więcej niż 2M
- 24. SQL72043 i inne błędy SSDT: jak znaleźć nieprawidłowy kod?
- 25. Jak wykorzystać licznik z jądra systemu Linux?
- 26. Jak obliczyć całkowity rozmiar obiektu NSDictionary?
- 27. Kompilowanie jądra Linux-em z non-gcc
- 28. Rozmiar procesu w systemie UNIX
- 29. Ustawianie powinowactwa procesu w trybie jądra
- 30. Czy jądra jądra systemu Linux są zamienione na dysk?
Nie jestem pewien, aby zrozumieć twoje pytanie: Rozmiar tabeli strony, AFAIK, nie jest procesem zależnym od tej samej platformy (cóż, może się mylę, nie jestem guru linux ...). Przy okazji zastanawiam się: czy naprawdę masz na myśli rozmiar strony * tabeli *? Czy masz na myśli zamiast tego * rozmiar strony *, ponieważ jest on coraz częściej potrzebny programistom IMHO? –
Mam na myśli ilość pamięci (jądra) zużywanej przez tabelę stron danego procesu. –