Come posso eseguire il benchmarking di negozi di valori chiave concorrenti?

5

Ho alcune implementazioni di store di valore chiave simultanee che sono implementate con tabelle hash e alberi di ricerca che vorrei confrontare. Mi piacerebbe confrontarli con un'applicazione reale in cui diversi thread sottolineano i punti vendita chiave.

Ho già un micro-benchmark che sottolinea gli archivi di valori-chiave eseguendo operazioni casuali sugli archivi di valori-chiave in parallelo. Ciò che mi interessa di più sono le applicazioni che svolgono un lavoro che potrebbe essere utile nel "mondo reale" e in cui uno o più negozi di valore-chiave sono importanti per la scalabilità e la velocità. Mi piacerebbe avere un benchmark facile da configurare e che possa essere eseguito su molti sistemi diversi. Preferirei se non implicasse la comunicazione di rete ecc.

Un esempio del tipo di applicazioni che sto cercando è l'algoritmo PageRank parallelo. È utilizzato come punto di riferimento di diversi negozi di valore-chiave nel documento "Concorrente con snapshot efficienti non bloccanti ( PPoPP'12) ".

I motivi per cui non sono soddisfatto con benchmark "artificiali" che inseriscono X%, eliminazioni Y% e ricerche% Z sono:

  1. Può essere più convincente con un benchmark che risolve anche un problema del mondo reale. Il rischio con un benchmark "artificiale" è che potrebbero non corrispondere ad alcuna situazione del mondo reale.
  2. Alcuni scenari di utilizzo che si verificano frequentemente in applicazioni del mondo reale potrebbero non essere coperti dal benchmark artificiale.
posta Kjell 14.05.2013 - 14:33
fonte

1 risposta

1

Perché non eseguire il collaudo operativo KVP (coppia valore chiave) esistente al livello successivo?

Presumibilmente, l'attuale serie di test include un elenco di potenziali KVP e quindi l'esecuzione di operazioni CRUD contro qualsiasi KVP selezionato. In effetti, l'elenco dei KVP guida i benchmark contro il tuo sistema. Un attore seleziona a caso il KVP e quindi seleziona un CRUD.

Il prossimo passo logico è creare serie di operazioni che "sostituiranno" il tuo elenco di potenziali KVP come driver. Le serie di operazioni rifletteranno ciò che pensate che sarà un carico di lavoro "reale". In alcuni casi, saranno ancora le operazioni CRUD sui KVP. In altri casi, come hai detto, avrà ulteriori cambiamenti (ovvero "lavoro reale") ed è l'insieme di quelle operazioni che creano il set.

Ora il tuo attore selezionerà dall'elenco di set invece di KVP. Punti bonus se rendi il tuo Attore abbastanza intelligente da scegliere i carichi di lavoro relativi, quindi una percentuale sarebbe CRUD su KVP e qualche altra percentuale sarebbe "lavoro reale".

Questo approccio non affronta completamente le tue preoccupazioni con benchmarks "artificiali", ma non so che qualsiasi soluzione in astratto possa realmente risolvere quel problema. In teoria, si conosce il carico di lavoro previsto migliore in modo da poter adattare di conseguenza tali serie di operazioni.

Il vantaggio di questo approccio è che ora puoi indicare "Il sistema è in grado di gestire transazioni ### di X% inserts, Y% deletes, Z% lookups e Q% 'operazioni nel mondo reale'". E aggiungerai un'osservazione parentetica che spiega che cosa significa "mondo reale" per te.

    
risposta data 08.07.2013 - 22:31
fonte

Leggi altre domande sui tag