2015-12-24 15 views
11

mi sto leggendo Building Applications on Mesos, e venire attraverso le seguenti dichiarazioni:Come capire l'allocazione della CPU in Mesos?

CPU
Questa risorsa esprime il numero di core CPU sono disponibili. Le attività possono utilizzare parti frazionarie di una CPU, questo è possibile perché gli slave di Mesos utilizzano le condivisioni di CPU, piuttosto che riservare CPU specifiche. Ciò significa che, se si dispone di 1.5 cpus riservato, i processi saranno autorizzati a utilizzare un totale di 1,5 secondi di tempo CPU ogni secondo. Ciò potrebbe significare che, all'interno di un singolo executor, due processi ciascuno ottengono 750 millisecondi di tempo CPU al secondo, o un processo ottiene 1 secondo del tempo CPU e un altro ottiene 500 millisecondi di tempo CPU ciascuno in un dato secondo. Il vantaggio dell'utilizzo di condivisioni di CPU è che se alcune attività sarebbero in grado di utilizzare più della sua condivisione e nessun'altra attività utilizzerà una CPU altrimenti inattiva, la prima attività potrebbe potenzialmente utilizzare più della sua condivisione. Di conseguenza, il cpus riservato fornisce un minimo garantito di tempo di CPU disponibile per l'attività: se è disponibile una capacità aggiuntiva, sarà consentito utilizzarne di più.

Non riesco a capire "if you have 1.5 cpus reserved, your processes will be allowed to use a total of 1.5 seconds of CPU time each second.". Come può utilizzare 1.5 secondi di tempo CPU ogni secondo?

risposta

1

Utilizzando più di una cpu/core :-).

Si noti che il comportamento/applicazione effettiva di questi limiti dipenderà molto dal contenitore/isolatore effettivo utilizzato. purtroppo non ho potuto trovare alcuna buona documentazione/recente (ma so che ci sono persone che lavorano per migliorare questo :-)), ma si potrebbe avere uno sguardo a questo post del blog: Blog Post about CPU resources

Aggiornamento Ci è anche un limite all'utilizzo della CPU: vedere lo --[no]-cgroups_enable_cfsconfiguration parameter o questo Jira.

9

cpu=1.5 dovrebbe stare per un core della CPU e metà. Puoi vedere nell'interfaccia utente Web di Mesos quanti core offre ciascun agente Mesos (slave). Questo è più o meno quello che mostra nproc a meno che lo mesos-slave non sia configurato per offrire meno CPU. Mesos conta le risorse con una precisione di 3 cifre decimali.

Ci sono diverse bandiere che influenzano il modo in cui Mesos limita le risorse. Per la CPU è più importante isolation (stiamo parlando di mesos-slave/mesos-agent impostazioni): limitazione

  • --isolation=posix/cpu,posix/mem Nessuno CPU viene applicata mesos-executor è solo un processo che esegue altro processo. Puoi utilizzare nice, ad es. Comandi nice -20 (per la massima priorità) o cpulimit per influenzare la pianificazione del kernel, ma Mesos's ad es. cpu=0.1 non sarà preso in considerazione.
  • --isolation=cgroups/cpu,cgroups/memcgroups (parte di Linux Kernel dal 2.6.29) consente di limitare le risorse utilizzate da ciascun processo o gruppo di processi. Alcune distribuzioni non abilitano la limitazione della memoria per impostazione predefinita e cgroup_enable=memory devono essere passate al kernel. Ma concentriamoci sulla CPU. Per impostazione predefinita, cgroups utilizza un approccio conservativo in cui cpu=1.0 significa che almeno un core CPU verrà riservato per l'attività. Ma nel caso in cui non ci siano altre attività in esecuzione sull'host, può consumare tutte le CPU.Supponendo che abbiamo un host con 12 CPUs e ci sono due attività in esecuzione con cpu=2.0. Quindi ogni attività potrebbe ottenere fino a core 6 CPUs! (supponendo che nessun altro task Mesos sia in esecuzione su quell'host). Questo è molto pericoloso, quando il cluster è a basso carico tutte le attività sembreranno buone, ma una volta che ci saranno molte attività, le prestazioni di alcuni host diminuiranno.
    • --cgroups_enable_cfsCFS è l'acronimo di Completely Fair Scheduler che richiede un approccio più rigoroso. Di default è disattivato, inoltre non tutte le distribuzioni supportano questo (puoi utilizzare, ad esempio, il Docker check-script.sh per verificare il supporto sul tuo sistema). CFS garantirà che ogni processo possa utilizzare al massimo la porzione specificata (ad esempio cpu=2.5). Questo ha un costo che nessun altro processo può utilizzare i core riservati quando qualche attività è inattiva. Quindi, assicurati di definire bene le tue esigenze.

Ultima problema sopra potrebbe essere risolto oversubscription CPU descritto in the Mesos documentation.

Problemi correlati