Qual é a diferença entre valores diferentes de cpu.cfs_period_us?

3

Estou lendo documentos do kernel [1] e confuso sobre o cpu.cfs_period_us nesta parte:

3. Limit a group to 20% of 1 CPU.

    With 50ms period, 10ms quota will be equivalent to 20% of 1 CPU.

    # echo 10000 > cpu.cfs_quota_us /* quota = 10ms */
    # echo 50000 > cpu.cfs_period_us /* period = 50ms */

    By using a small period here we are ensuring a consistent latency
    response at the expense of burst capacity.

Não estou claro sobre qual é a diferença se eu "usar um pequeno período":

qual é o significado de ensuring a consistent latency response at the expense of burst capacity ?

[1] link

    
por harryz 05.07.2015 / 12:14

1 resposta

2

When the CPU bandwidth consumption of a group exceeds this limit [quota] (for that period), the tasks belonging to its hierarchy will be throttled and are not allowed to run again until the next period.

Eu diria que eles estão tentando salientar que, se você provisionar 10 segundos de tempo de CPU em um minuto, o aplicativo poderá ser interrompido por 50 segundos, já que está fora do tempo provisionado. 10 segundos correndo ininterruptamente na potência máxima, 50 segundos sem nada. Isso é bom, se você tiver o aplicativo, que precisa fazer um cálculo muito intensivo o mais rápido possível. De vez em quando.

Por outro lado, se você definir um valor muito baixo, como 50us de 500us, seu aplicativo será executado por apenas 0,05ms antes de ser interrompido e retomado 0,45ms depois. Explosão de 50us não é uma explosão :) ... mas o aplicativo é interrompido por 0,45ms no máximo. Isso seria bom, se você tem um aplicativo, que não computa muito, mas precisa ter latência muito baixa, pois o tempo que o aplicativo é acelerado aumenta a latência.

(intencionalmente usando números fora de proporção)

    
por 05.07.2015 / 12:27