O ventilador nunca alcança alta velocidade, mesmo que claramente necessário

4

O consumo de CPU é muito alto (o que obviamente não deveria) ao assistir a vídeos no Chrome. Isso se deve a alguma regressão que apareceu recentemente (isso não aconteceria antes), mas esse não é o ponto aqui. Vamos supor que algo está consumindo muita CPU.

Eu desabilitei intel_powerclamp e intel_rapl, então quando o consumo de CPU fica alto, eu esperaria que a ventoinha de arrefecimento acelerasse o mais rápido possível para resfriar a CPU.

Em vez disso, o que acontece é que o ventilador NUNCA atinge sua velocidade máxima, nem mesmo perto disso. E todo o sistema desacelera e fica sem resposta, de uma forma muito semelhante à usada quando o intel_powerclamp foi ativado. Mas nenhum processo "kidle_inject" aparece no topo.

O PROOF que a ventoinha de resfriamento não está girando tão rápido como deveria é que se eu reiniciar o computador, antes do sistema começar a inicializar (no menu de inicialização), o ventilador girará em velocidade insana. Isso prova (1) que é capaz de ir mais rápido do que quando o sistema operacional está rodando e (2) que o hardware "pensa" que a temperatura o requer, até que o sistema operacional entre em ação e pense que sabe melhor.

Eu só posso ver duas explicações para isso:

A) algumas configurações de software estão limitando a velocidade do ventilador (talvez porque ele esteja configurado sob a suposição de que intel_powerclamp também estava lá e faria metade do trabalho). Então, como o ventilador na sua velocidade atual não é suficiente para resfriar a CPU, e como o intel_powerclamp não está limitando o uso da CPU, alguma proteção de hardware interna da CPU entra em ação e a limita, para evitar que ela queime (ou alcance o limite rígido que faria com que ele se desligasse abruptamente) OF

B) além de intel_powerclamp e intel_rapl que eu desabilitei (eu entendo como o intel_powerclamp funciona, não tenho idéia de como o intel_rapl faz), existe algum outro driver que funciona de alguma forma similar, diminuindo a CPU para fazer com que consuma menos poder.

No caso (A) eu precisaria consertar a configuração para que o ventilador tenha permissão para funcionar em sua capacidade máxima e ver se isso é suficiente para manter a temperatura baixa e impedir a proteção do hardware.

No caso (B), eu provavelmente quero tentar

[B1] desabilita qualquer outro software ou mecanismo de otimização de CPU baseado em semi-software que esteja fazendo um trabalho ruim, e veja se o ventilador sozinho é suficiente, ou

[B2] ajusta de alguma forma algum fator de peso ou configuração de limiar ou prioridade para que o ventilador possa correr mais rápido ANTES que o afogamento da CPU entre em ação (e esperamos que até mesmo impeça que isso aconteça).

Alguém sabe como descobrir se é (A) ou (B) e como corrigir isso?

Eu li sobre a configuração do Thermald no link , mas é muito incerto e não há exemplos práticos.

    
por matteo 09.07.2016 / 23:58

1 resposta

2

Acabei de passar por este exercício com thermal. Primeiro, devo salientar que o thermald foi quebrado, mesmo em versões novas de 16.04, já que ele não iria ler seu arquivo de configuração. Isso agora foi corrigido, portanto, certifique-se de ter todas as atualizações instaladas.

Além disso, a página à qual você faz referência é muito boa e também contém um exemplo de arquivo de configuração thermal-conf.xml.

Em seguida, supondo que você tenha instalado o thermald, pare o processo e reinicie-o no modo -no-daemon e observe cuidadosamente a saída. Ele lhe dará a maioria das respostas necessárias para configurar seu próprio arquivo thermal-conf.xml. Preste atenção para cdev (dispositivo de refrigeração), etc.

serviço thermald stop sudo

sudo thermald --no-daemon --loglevel = depuração

Aqui está uma cópia do meu arquivo thermal-conf.xml personalizado para você ver:

<?xml version="1.0"?>
<ThermalConfiguration>
<Platform>
    <Name>Toshiba Laptop</Name>
    <ProductName>*</ProductName>
    <Preference>QUIET</Preference>
    <ThermalSensors>
            <ThermalSensor>
                    <Type>x86_pkg_temp</Type>
                    <Path>/sys/class/thermal/thermal_zone0/</Path>
                    <AsyncCapable>1</AsyncCapable>
            </ThermalSensor>
    </ThermalSensors>
    <ThermalZones>
            <ThermalZone>
                    <Type>cpu package</Type>
                    <TripPoints>
                            <TripPoint>
                                    <SensorType>x86_pkg_temp</SensorType>
                                    <Temperature>59000</Temperature>
                                    <type>passive</type>
                                    <ControlType>PARALLEL</ControlType>
                                    <CoolingDevice>
                                            <index>0</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>1</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>2</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>3</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>4</index>
                                            <type>intel_powerclamp</type>
                                            <influence> 30 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>5</index>
                                            <type>rapl_controller</type>
                                            <influence> 50 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>6</index>
                                            <type>intel_pstate</type>
                                            <influence> 40 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>7</index>
                                            <type>rapl_controller_dram</type>
                                            <influence> 50 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                            </TripPoint>
                    </TripPoints>
            </ThermalZone>
    </ThermalZones>
</Platform>
</ThermalConfiguration>
    
por heynnema 10.07.2016 / 01:31