X servidor no cartão NVIDIA sem tela

2

Eu tenho uma situação bastante única, onde tenho um servidor com uma placa gráfica NVIDIA instalada, que precisamos que o servidor X seja executado, no entanto, o servidor mora em um rack sem monitor. A razão para ter o X executando é para renderizar operações com um programa usando o Qt. Há enormes benefícios em eficiência usando renderização por GPU em vez de CPU. Sempre que eu startx , X falha ao iniciar porque nenhuma tela é anexada. Qual é o melhor método para iniciar o x com um monitor falso? SO é RHEL 6

    
por Stuart Buckingham 18.12.2017 / 21:25

1 resposta

4

Eu não sei se isso é 'o melhor caminho' , mas é como eu faço isso.

Use a GUI nvidia-settings para criar um arquivo edid para uma tela

Em seguida, no terminal de sua escolha, cole ou escreva:

sudo nvidia-xconfig -a --allow-empty-initial-configuration \
--use-display-device="DFP-0" --connected-monitor="DFP-0" \
--custom-edid="DFP-0:/home/$USER/edid.txt" 

sudo reboot

Para adicionar GPU (s) e telas ao xorg.conf.

Se você quiser fazer overclock e controlar o (s) ventilador (es), adicione '--cool-bits = 12' (ou qualquer documentação da NVIDIA que se aplique ao seu driver) ao 'nvidia-xconfig' linha no topo.

Se você não tem um jeito de fazer um arquivo edid, ou não consegue encontrar um aqui, é o que eu uso:

00 ff ff ff ff ff ff 00 1e 6d f5 56 71 ca 04 00 05 14 01 03 80 35 1e 78 0a ae c5 a2 57 4a 9c 25 12 50 54 21 08 00 b3 00 81 80 81 40 01 01 01 01 01 01 01 01 01 01 1a 36 80 a0 70 38 1f 40 30 20 35 00 13 2b 21 00 00 1a 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 00 00 00 fd 00 38 3d 1e 53 0f 00 0a 20 20 20 20 20 20 00 00 00 fc 00 57 32 34 35 33 0a 20 20 20 20 20 20 20 01 3d 02 03 21 f1 4e 90 04 03 01 14 12 05 1f 10 13 00 00 00 00 23 09 07 07 83 01 00 00 65 03 0c 00 10 00 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 01 1d 80 18 71 1c 16 20 58 2c 25 00 13 2b 21 00 00 9e 01 1d 00 72 51 d0 1e 20 6e 28 55 00 13 2b 21 00 00 1e 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00 13 2b 21 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 26

Salve em edid.txt no diretório inicial do usuário ou altere o local na linha de configuração.

Se você habilitar o overclocking e quiser usar uma tela na sua GPU principal:

sudo nano /etc/X11/xorg.conf

Remover linhas:

Option         "UseDisplayDevice" "DFP-0"
Option         "CustomEDID" "DFP-0:/home/nv/edid.bin"
Option         "ConnectedMonitor" "DFP-0"

na tela "Seção" "que tem seu GPUID com a tela anexada e atribuída a ele.

Overclocking!

Limite de energia:

sudo nvidia-smi -i GPUID -pl WATTLIMIT

Relógio principal:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUGraphicsClockOffset[3]=16

: 0 é a tela X atribuída à GPU, GPUID é como adivinhou o número da GPU (contando a partir de 0).

16 == deslocamento.

Use números negativos para fazer o underclock.

Relógio da memória:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUMemoryTransferRateOffset[3]=1200

Se você está acostumado com o Afterburner, você precisa dobrar os valores de offset no Linux (circa).

Eu sempre pego mais suco dos meus cartões em um sistema Linux ( para meu uso )

Ativar e controlar o (s) ventilador (es) manualmente:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUFanControlState=1
nvidia-settings -c :0 -a [fan:GPUID]/GPUTargetFanSpeed=85

Defina GPUFanControlState de volta para 0 para desativar o controle manual.

GPUTargetFanSpeed recebe um inteiro de 0 a 100 como entrada.

Verifique a temperatura, o uso de energia, etc:

nvidia-smi

Se o processo ficar bloqueado em um estado de baixa energia pela GPU, a única solução encontrada foi criar um perfil de aplicativo; não havia como controlar o estado P. Pelo menos em cartões de consumo.

Aqui está o processo:

cd ~/.nv
cat > nvidia-application-profiles-rc

Cole este modelo:

{
"rules": [
    {
        "pattern": {
            "feature": "procname",
            "matches": "NameOfRunningProcessThatWantsMorePriority"
        },
        "profile": "ProfileNameWhatever"
    }
],
"profiles": [
    {
        "name": "ProfileNameWhatever",
        "settings": []
    }
]
}

Pressione Enter e depois CTRL + C antes de editar com o que for adequado ao seu gosto.

Inicie seu processo e digite nvidia-smi para obter o nome do processo a ser usado no perfil do aplicativo.

Como alternativa, se você tiver acesso à GUI, poderá criar o perfil do aplicativo.

Para manter os limites de energia personalizados nas reinicializações, o "Modo de persistência" precisa ser ativado.

Para ativá-lo em todas as GPUs:

sudo nvidia-smi -pm 1

Para habilitá-lo em uma GPU específica:

sudo nvidia-smi -i GPUID -pm 1

O Modo de persistência ajudará com a velocidade se estiver executando sem cabeça e executando vários processos pequenos um após o outro, já que a GPU não vai dormir entre os trabalhos, isso reduzirá o tempo para processar muitas tarefas pequenas! Aumentará o consumo ocioso quando ativado!

INFORMAÇÕES ADICIONAIS AO USAR o lightdm !!
Métodos regulares produzem problemas em sistemas Ubuntu mais recentes

Como tudo o mais, na verdade, configurando coisas, use conta root ou sudo

Controle de fãs:

# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUFanControlState=1
# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [fan:GPUID]/GPUTargetFanSpeed=70

Over / underclock:

# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUGraphicsClockOffset[3]=64
# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUMemoryTransferRateOffset[3]=1100

# == root ou sudo

Se surgirem problemas quando tudo estiver em execução (ou não), a NVIDIA publicou algumas consultas interessantes para solução de problemas:

Consultas nvidia-smi úteis

Outro;

Dicas e truques do ArchLinux Wiki na NVIDIA

driver do xconfig apêndice NVIDIA 384.98

Basta alterar a versão do driver na URL para a versão do seu driver e você estará no caminho certo.

    
por 18.12.2017 / 22:03