Mam niestandardową aplikację serwera działającą w systemie Windows 2008 R2. Jest to domowa usługa Windows napisana w .Net, obsługująca wiele niestandardowych terminali. Mam maszynę testową, która ma podobną specyfikację jak serwer na żywo i mam zestaw symulatorów klienta, których mogę użyć do wytworzenia obciążenia, które jest rozsądnym przybliżeniem rzeczywistego systemu. Muszę być w stanie obsłużyć 12 000 z nich, a obecnie na serwerze brakuje pamięci (stronicowanie przechodzi przez dach).
Moim planem było uruchomienie tylko 100 symulatorów, zmierzenie zużycia pamięci, a następnie ponowne uruchomienie 100 dodatkowych pomiarów pamięci i powtarzanie do momentu, gdy stronicowanie zacznie rosnąć (w rzeczywistości zajmę więcej niż trzy punkty danych.) To powinno dać mi wartość dla ilość dodatkowej pamięci wymaganej dla 100 symulatorów i umożliwia mi wyświetlenie wymaganej ilości pamięci. Potrzebuję tylko wstępnego pomysłu +/- 30 Gb, aby uniknąć zakupu pełnych 2 TB (o wartości 150 000 USD), które zabierze serwer. Moje pytanie brzmi, czy jest to rozsądna metoda, a jeśli tak, to które liczniki wydajności monitorujesz, aby podać ilość faktycznie używanej pamięci?
Mówię tu konkretnie o pamięci, ponieważ dezorientują mnie różnice między zestawem roboczym, prywatnymi bajtami, zaangażowanymi, współdzielonymi, wirtualnymi i wszystkimi innymi warunkami pamięci. Myślę, że potrafię samodzielnie monitorować procesor, operacje we / wy i sieć. Inną rzeczą, którą zauważyłem, jest to, że pamięć .NET Cache dostosowuje zużycie pamięci w zależności od tego, co jest dostępne, co utrudnia dostrzeżenie trendu.