Ho un'applicazione server personalizzata che funziona su Windows 2008 R2. È un servizio Windows cresciuto in casa scritto in .Net che supporta numerosi terminali personalizzati. Ho una macchina di prova che ha una specifica simile al server live e ho una serie di simulatori client che posso usare per produrre un carico che è una ragionevole approssimazione del sistema reale. Devo essere in grado di supportare 12.000 di questi e al momento il server sta esaurendo la memoria (il paging sta attraversando il tetto).
Il mio piano era di avviare solo 100 simulatori, misurare l'utilizzo della memoria, quindi riavviare ancora 100 volte misurare la memoria e ripetere fino a quando il paging inizia a salire (in realtà prenderò più di tre punti dati). Questo dovrebbe darmi una cifra per la quantità di memoria aggiuntiva richiesta per 100 simulatori e mi consente di proiettare quanta memoria è richiesta. Ho solo bisogno di un'idea approssimativa di +/- 30 GB per evitare di acquistare l'intero 2 TB (valore di $ 150.000) che il server prenderà. La mia domanda è se si tratta di un metodo ragionevole da utilizzare e, in caso affermativo, quali contatori delle prestazioni monitorereste per fornire la quantità di memoria effettivamente utilizzata?
Sto specificamente parlando della memoria qui come la differenza tra working set, byte privati, commit, condiviso, virtuale e tutti gli altri termini di memoria mi confondono. Penso di riuscire a monitorare da solo CPU, IO e reti. L'altra cosa che ho notato è che .Net Cache regola l'utilizzo della memoria in base a ciò che è disponibile, il che rende difficile individuare una tendenza.