Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este guia explica como configurar seu dispositivo para desempenho em tempo real.
Observação
A única maneira de usar esse recurso é com um aplicativo e dispositivo personalizados para uma finalidade específica. O mapeamento das atribuições de núcleo do processador nos threads do aplicativo deve corresponder aos núcleos do dispositivo físico e sua configuração para cargas de trabalho em tempo real versus padrão.
Desative estados ociosos com
powercfg.exe
Consulte as diretrizes de segurança para serviços do sistema para desabilitar os seguintes serviços:
- SysMain (Superfetch)
- DPS (Serviço de Política de Diagnóstico)
- Audiosrv (Áudio do Windows)
Desative o Windows Update usando estas diretrizes.
Observação
Isso abrirá seu dispositivo para vulnerabilidades, pois os patches de segurança não serão aprovados. Dito isso, é necessário, pois o agente do Windows Update não respeita o isolamento do núcleo da CPU. Recomendamos ter um plano para garantir a segurança do dispositivo e instalar atualizações durante os momentos em que o dispositivo pode ser desativado para manutenção
Dica
Um bom exemplo de gerenciamento de atualizações durante o tempo de inatividade pode ser encontrado na documentação da UWF: Dispositivos protegidos por UWF de serviço Se você estiver usando UWF e Soft Real-time, esse processo deverá atender à necessidade de atualização do sistema operacional para ambos os recursos ao mesmo tempo.
Defina o CSP do WindowsIoT para desempenho em tempo real.
Configurar o RSS para migrar ISRs/DPCs para CPU0
Observação
Isso depende do hardware e só pode ser feito se a placa de rede oferecer suporte a RSS
Opcional: Desabilitar DPCs encadeados para depuração
Opcional: implantando um driver de fixação DPC personalizado para determinadas interrupções de hardware seguindo estas diretrizes.
Executando esta configuração a partir da linha de comando
Isso configura o dispositivo enquanto está ligado. Para garantir que o dispositivo mantenha o desempenho do soft-RT, você deve configurar o computador para executar esses comandos como um script sempre que o computador for ligado usando essas diretrizes.
Execute esses dois comandos em um prompt cmd. Isso desabilita os estados ociosos da CPU, em que uma CPU sem instruções para execução entrará em um estado de economia de energia. Isso é indesejável em cenários em tempo real, pois as CPUs ociosas têm um atraso no início da execução de novas instruções:
powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1 powercfg.exe /setactive SCHEME_CURRENT
Execute estes três comandos em um prompt cmd para desabilitar o DPS:
sc query dps sc stop dps sc config dps start=disabled
Execute estes três comandos em um prompt cmd para desabilitar o Audiosrv:
sc query Audiosrv sc stop Audiosrv sc config Audiosrv start=disabled
Execute estes três comandos em um prompt cmd para desabilitar o SysMain:
sc query SysMain sc stop SysMain sc config SysMain start=disabled
Execute estes três comandos em um prompt cmd para desabilitar o Windows Update:
sc query wuauserv sc stop wuauserv sc config wuauserv start=disabled
Execute este comando para desabilitar DPCs encadeados
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\kernel" /v ThreadDpcEnable /t REG_DWORD /f /d 0
Garantindo que o dispositivo permaneça configurado em tempo real
Antes de implantar um dispositivo em tempo real em um ambiente de produção, há outra configuração necessária para garantir que o dispositivo possa receber atualizações e manter o desempenho em tempo real:
- Configure um script que possa reabilitar o Windows Update, instalar atualizações e desativar o Windows Update novamente
- Configure verificações para garantir que os serviços no dispositivo permaneçam desativados
O que é o CSP do WindowsIoT?
O WindowsIoT CSP
é usado para configurar dispositivos Windows IoT. Atualmente, a única funcionalidade disponível neste CSP é configurar um dispositivo para desempenho em tempo real flexível. Este não é o único trabalho que precisa ser feito para usar o soft real-time com um dispositivo. Você também deve executar as seis etapas anteriores. Usar esse CSP para definir núcleos de software em tempo real sem também executar esse trabalho de configuração extra resulta em mau funcionamento do sistema e requer recriação de imagens para recuperação.
A hierarquia desse CSP é a seguinte:
WindowsIoT
SoftRealTimeProperties
SetRTCores
Um valor maior que 0 e menor que o número total de núcleos no dispositivo deve ser fornecido ao parâmetro SetRTCores . Sinta-se à vontade para definir esse CSP usando qualquer ferramenta que sua organização use para configurar seus dispositivos ou use as etapas abaixo para usar a Ponte MDM.
Usar o provedor WMI da ponte MDM para configurar o CSP do WindowsIoT
Esse CSP configura o sistema para desempenho em tempo real. Você precisa fornecer o número de núcleos de CPU a serem alocados para tarefas em tempo real, com o restante sendo alocado para executar tarefas do sistema ou do usuário padrão. Um valor numérico deve ser fornecido no nó SetRTCores. Esse é o número de núcleos de CPU dedicados a cargas de trabalho em tempo real. Os valores numéricos válidos devem ser pelo menos 1 e menores que o número de núcleos físicos na CPU.
Os ambientes que usam a WMI (Instrumentação de Gerenciamento do Windows) podem usar o Provedor WMI da Ponte MDM para fazer isso. Aqui está um exemplo para definir a configuração do RealTime com três núcleos em tempo real:
Baixe a ferramenta psexec.
Execute um prompt de comando administrativo.
No prompt de comando, inicie o PowerShell na conta do sistema
psexec.exe -s -i powershell.exe
Execute a consulta a seguir:
$nameSpaceName="root\cimv2\mdm\dmmap" $className="MDM_WindowsIoT_SoftRealTimeProperties01" $obj = Get-CimInstance -Namespace $namespaceName -ClassName $className Add-Type -AssemblyName System.Web Set-CimInstance -CimInstance $obj $obj.SetRTCores = 3 Set-CimInstance -CimInstance $obj
Reinicie a máquina para ativar a alteração.
Dica
Você pode usar o mesmo script para qualquer número de núcleos em tempo real que você precisa ter, apenas substituindo o 3 na penúltima linha pelo número apropriado. Isso reservará núcleos começando com o núcleo mais alto e indo para baixo. Portanto, reservar 3 núcleos em uma CPU de 4 núcleos reservará os núcleos 3, 2 e 1 e deixará o núcleo 0 para tarefas do sistema e não em tempo real. Observe que não há garantia de que os núcleos em tempo real permanecerão mais altos, pois os índices de núcleo em tempo real permanecerão fixos se aumentarem a contagem de núcleos da CPU posteriormente.
Próximo: Desenvolver um aplicativo de software em tempo real