Prestazioni di una struttura di directory di grandi dimensioni, applicazione di rete [chiuso]

StackOverflow https://stackoverflow.com/questions/80470

  •  09-06-2019
  •  | 
  •  

Domanda

Sto cercando di scoprire quali sarebbero le prestazioni di una struttura di directory di grandi dimensioni se si accedesse alle directory profonde su un filesystem nfs condiviso.La struttura sarebbe eccessivamente grande, con 4 livelli di directory nidificate, ciascun livello contenente 1024 directory.(1024 alla radice, 1024 in una determinata sottodirectory e così via).

Questo filesystem si troverebbe su un repository di rete a cui gli utenti accederebbero per le loro informazioni personali.I dati verrebbero replicati su più server e bilanciati nel carico, ma ogni macchina avrebbe comunque un carico decente in ogni momento.

Se il 4° livello contenesse le informazioni che gli utenti stavano cercando, quanto sarebbero negative le prestazioni?Se tutti accedessero a sottodirectory diverse?Questo problema potrebbe essere risolto memorizzando nella cache le informazioni sull'inode o no?

Lo sto cercando da un po', ma trovo principalmente informazioni su file di grandi dimensioni piuttosto che su strutture di directory di grandi dimensioni.

È stato utile?

Soluzione

L'ho fatto una volta al lavoro.Non ricordo i numeri esatti, ma penso che fossero profondi 8 livelli, 10 sottodirectory in ogni livello (l'ID utente 87654321 si associa alla directory 8/7/6/5/4/3/2/1/.Si è scoperto che non era una grande idea, ho iniziato a riscontrare problemi con i limiti del numero di inode del file system, iirc (10 ^ 10 = 10000000000 directory, non va bene).Passato a più sottodirectory per livello e molti meno livelli;i problemi sono scomparsi.La tua situazione sembra più gestibile, ma controlla comunque che il tuo filesystem supporti i tipi di conteggi di file e directory che stai anticipando.

Altri suggerimenti

La risposta qui dipenderà fortemente dal tuo sistema operativo, puoi fornire maggiori informazioni?Ho scoperto che i tempi di apertura dei file sotto Linux erano ragionevoli fino a dimensioni di directory dell'ordine di decine di migliaia, ma non ho provato alcun test con strutture di directory grandi come la tua (sai che 1024 alla quarta potenza è 1.099.511.627.776 giusto ?E questo è qualcosa come 180 volte la popolazione della terra, giusto?)

Sembra che tu voglia semplicemente scrivere un'app di prova per generare 1024 cartelle, ripetute di 8 livelli verso il basso, con ciascuna cartella contenente un certo numero (100 - 1000?) di file di dimensioni di 1 KB e quindi trovare e accedere in modo casuale ai file.

Tieni traccia dei tempi di accesso su più passaggi e verifica se è accettabile per le tue esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top