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.