Il qo dell'applicazione riguarda la priorità e la larghezza di banda

1

Il nostro manager vuole che applichiamo qos che è molto diverso dal noto sistema qos. Abbiamo molti servizi di tre tipi, hanno priorità, il manager vuole sospendere le richieste di servizi a bassa priorità quando non c'è abbastanza larghezza di banda per i servizi ad alta priorità. Tuttavia, se le richieste di servizi ad alta priorità diminuiscono, la larghezza di banda per i servizi a bassa priorità dovrebbe aumentare e le richieste di servizi con priorità bassa saranno nuovamente consentite.

Ci dovrebbe essere un algoritmo che includa priorità e larghezza di banda. Non so come progettare l'algoritmo, qualcuno può aiutare a ottenere questo giusto?

Tutti questi servizi sono all'interno di uno stesso processo. Stiamo impostando la larghezza di banda massima per i tre tipi di servizi tramite i port of services tramite TC (TC è lo strumento di Linux qos il cui nome significa controllo del traffico).

    
posta Steve 23.08.2013 - 16:03
fonte

4 risposte

1

La prima cosa da capire è che fondamentalmente hai bisogno di creare un sottoinsieme di tutte le parti che vanno in un programmatore del sistema operativo, tra cui:

  • strumentazione e monitoraggio (quali risorse sono attualmente disponibili?)
  • Processo decisionale / politica (come devono essere allocate le risorse? In che modo gli utenti o gli amministratori comunicano le loro preferenze politiche / prioritarie?)
  • Enforcement (In che modo i processi devono essere limitati dall'usare più della loro quantità allocata?)

La buona notizia è che molti componenti, specialmente nel campo del monitoraggio e dell'esecuzione, saranno strati molto sottili su meccanismi esistenti come Linux cgroups , netstat e tc.

C'è anche una possibilità che il meccanismo delle policy dei cgroups sia sufficiente per le tue necessità. E 'molto più sofisticati dei "priorità" di interesse storico Unix, e molti negozi commerciali hanno fatto affidamento su simili (anche se di proprietà / singolo vendor) servizi come HP PRM e AIX WPAR per la gestione della QoS dell'applicazione.

Di solito funzionano su alcune varianti della programmazione equa delle azioni , che consente di definire le priorità relative per le diverse classi o gruppi di lavori / processi, e organizzare le classi / gruppi l'uno rispetto all'altro, in modo che la loro importanza relativa e l'allocazione delle risorse siano come la politica o "come l'impresa" intesa, senza tuttavia affamare completamente i lavori a priorità più bassa. (Se sei disposto a far morire di fame i lavori con priorità più bassa, è possibile utilizzare meccanismi più semplici.)

Forme semplici di FCS usano classi a livello singolo, con ogni membro in una classe uguale agli altri. Forme più raffinate utilizzano raggruppamenti gerarchici, in modo che le "risorse minime del 50% dedicate agli utenti Platinum" possano essere ulteriormente suddivise con assegnazioni o minimi specifici per sottogruppi o anche per singoli utenti. (Avere un unico app / lavoro sia l'unico membro di un gruppo è un modo semplice per dare tutta l'allocazione del gruppo.) Questa pagina fornisce alcuni dettagli su come funziona uno di questi "workload manager" (Adaptive Computing's Moab).

Cisonounavarietàdimodiincuilepolitichepossonoesseredefinite."Shares" è un modo relativamente sofisticato, ma che gli utenti alle prime armi trovano spesso difficili. "Percentuali" o "priorità" sono in qualche modo meno precisi e più perturbabili, ma possono essere più popolari con meno policy-setter matematici.

E ci sono molte sfumature possibili. Le allocazioni LPAR delle macchine AIX e IBM Power, ad esempio, hanno un numero di opzioni sottili per inversioni temporanee di priorità, "rubare" cicli che altrimenti non sarebbero utilizzati e altrimenti modificando le politiche. Se vuoi qualcosa di molto sofisticato, i sistemi Unix proprietari hanno una serie di buoni punti di studio.

    
risposta data 22.10.2014 - 01:05
fonte
0

Non vedo nulla che non sia già stato risolto dalle "discipline" di accodamento esistenti.

Tutto ciò che devi fare è limitare la frequenza della root e ordinare il traffico in code appropriate per priorità.

Normalmente il traffico QoS prima che entri nel collegamento più stretto. Ma se si desidera dare la priorità al download, è comunque possibile sacrificare un po 'di larghezza di banda totale. Se si limita il traffico in entrata ad un bit inferiore alla larghezza di banda totale (ad esempio 5-10%), il traffico a bassa priorità otterrà più pacchetti scartati rispetto a quello ad alta priorità che renderà l'algoritmo di congestione TCP ritirarsi più velocemente per il basso traffico prioritario e dopo breve tempo si fermerà per fermarsi se c'è abbastanza traffico ad alta priorità.

    
risposta data 25.11.2013 - 13:14
fonte
0

Ci sono aziende che fanno domanda di QoS per vivere (Exinda, Riverbed, ecc.) e non è un lavoro che può essere completato da una sola persona se hai bisogno di un sistema affidabile. Detto questo, se vuoi ancora andare avanti e implementare una soluzione più economica, TC in linux è un buon punto di partenza che ti permetterà di limitare il traffico. IPtables può essere utilizzato per creare regole per contrassegnare il traffico con un marchio e instradare i pacchetti a diversi bucket TC basati sul mark.I non posso dare risposte più specifiche sulla configurazione di regole e ttable iptable senza ulteriori informazioni sulla tua rete e sul tipo di applicazioni stai cercando di dare la priorità.

In termini di accodamento ci sono molti algoritmi generici come FIFO, HTB.

Potresti riuscire a scappare con i semplici script bash se stai cercando di dare la priorità a traffico generico come HTTP, FTP o porte come stai cercando di fare.

Se stai cercando un sistema più sofisticato in grado di rilevare diversi tipi di applicazioni web, potresti dover dare un'occhiata a uno strumento per l'ispezione dei pacchetti (molti di questi devono essere acquistati). Se hai un decente i firewall nella tua sede potrebbero avere anche alcune funzionalità di QoS.

Il mio punto è che è un compito molto enorme costruire un sistema QoS in un ampio schema di cose, ma se puoi dare input più specifici su ciò che stai cercando di ottenere, qualcuno potrebbe essere in grado di aiutarti.

Disclaimer: lavoro con Exinda.

    
risposta data 23.06.2014 - 19:26
fonte
-2

Una soluzione sarebbe quella di eseguire i servizi attraverso una soluzione di accodamento dei messaggi (come RabbitMQ, MQSeries, ecc.). Ciò fornirà priorità, può essere bilanciato sul carico e offre una consegna garantita.

    
risposta data 26.09.2013 - 00:36
fonte

Leggi altre domande sui tag