Come creare un foglio di dimensionamento dell'hardware?

2

Costruiamo una piattaforma software e ora abbiamo bisogno di creare un foglio di dimensionamento hardware per la parte server di questo software. Quindi, dovrei preparare un modello matematico che, ad esempio, dato il numero di utenti concorrenti, può prevedere il numero di server fisici o capacità di storage o larghezza di banda della rete. Come realizzare questo modello?

    
posta Pavel Surmenok 20.03.2012 - 07:19
fonte

3 risposte

2

Potresti voler iniziare con un modello matematico, ma ti consiglio di fare una simulazione - creare un "utente": un programma che agisce come un utente e genera attività simili a utenti randomizzati. Quindi, carica il sistema con un set di dati di tipo reale (dimensionato di conseguenza) e distribuisci gli utenti contro la struttura che hai creato. Risciacquare e ripetere fino ad ottenere tutte le misure per ogni punto di dati in modo da avere una ragionevole sicurezza che il numero rappresenti le prestazioni a un dato carico e che il rumore sia stato ridotto a un livello che non interferisca con le misurazioni. Tieni d'occhio i massimi, perché possono apparire nell'uso reale e far deragliare l'applicazione. Inoltre, ricorda di testarlo con numeri assurdi di utenti e volumi di dati assurdi, poiché spesso ti offre informazioni su problemi che potrebbero non essere evidenti in scenari più normali.

Se possibile, pubblica accanto al tuo grafico la metodologia che hai usato (come si comportano i tuoi utenti, quale hardware hai usato - se vero metallo, se istanze EC2 - e quante misurazioni hai fatto).

Questo è un esercizio molto degno, a proposito. Potresti scoprire alcuni colli di bottiglia che non avresti mai immaginato di avere, oltre a nuovi modi per mettere a punto la tua applicazione su configurazioni hardware diverse che non ti sono mai venute in mente.

Vengo da uno sfondo web e cerco di rendere tutti i sistemi che creo in grado di generare uno o più file di configurazione JMeter a scopo di test del carico. Nessuno sa come simulare meglio il carico rispetto al sistema stesso: ha accesso a schemi di utilizzo precedenti e al proprio database di lavoro.

E poi quando hai un sacco di dati sperimentali, puoi affinare i tuoi modelli matematici al fine di prevedere condizioni che potresti non facilmente simulare.

    
risposta data 23.03.2012 - 15:37
fonte
1

Penso che il consiglio per il prototipo sia giusto. Eseguilo, guarda come funziona con gli utenti X. Quindi, aggiungi un "fattore fudge" in cima ai tuoi risultati in modo da avere un po 'di respiro con i tuoi clienti. Pertanto, se i risultati del test hanno rilevato che sono necessari 512 MB di RAM per 100 utenti, scrivere 768 MB o 1 GB nelle specifiche consigliate.

I grandi (HP, Microsoft, Oracle) hanno tutti dei consigli. Normalmente queste raccomandazioni sono seguite in modo approssimativo negli ambienti di sviluppo e test, oppure ignorate completamente perché l'hardware utilizzato è "qualunque cosa sia disponibile". Solo un pensiero a riguardo.

    
risposta data 20.03.2012 - 15:16
fonte
1

Un approccio "puramente matematico" è improbabile che sia molto accurato. Una delle domande fondamentali da porre quando si ottimizza il software per le prestazioni è "l'hai misurata"?

Il mio consiglio sarebbe di eseguire alcuni test di stress del software. Fatelo in modo attentamente controllato e osservate il comportamento del sistema mentre è sottoposto a diversi livelli di stress. Queste informazioni, combinate con le tue conoscenze interne del sistema stesso, dovrebbero permetterti di formulare alcune ipotesi formulate sul modo in cui il tuo sistema funzionerà con hardware e carichi diversi. Vorrei sconsigliare di cercare di estrapolare l'hardware che varia in modo anomalo dall'impostazione di test: è una cosa prevedere cosa accadrà se passerai da due core a quattro, ma ridurrai tale valore a 64 core o utilizzerai in modo efficiente centinaia di GB o RAM? Starei lontano da ipotesi selvagge come quella.

    
risposta data 22.03.2012 - 14:52
fonte

Leggi altre domande sui tag