Aumenta o tamanho do buffer do soquete de datagrama do domínio Unix no arquivo de unidade do systemd

1

Eu uso o soquete de datagrama de domínio Unix para comunicação de daemon unidirecional. O processo de gravação no soquete pode ficar bloqueado em write() , em alguns picos de cálculo, porque o processo de leitura leva mais tempo para calcular um único datagrama. Como o processo de escrita produz os dados periodicamente, a maneira mais limpa de resolver o problema seria apenas aumentar os recursos de armazenamento em buffer do soquete. O soquete é criado com base no seguinte arquivo de unidade do systemd:

[Unit]
Description= Some Internal Socket

[Socket]
ListenDatagram=/run/foo/foo.sk
#ReceiveBuffer=10M
#SendBuffer=10M
#PipeSize=10M
#MessageQueueMaxMessages=1024
#MessageQueueMessageSize=1024

Eu olhei para o homem do systemd.socket e encontrei algumas opções que pareciam promissoras (as comentadas). Eu experimentei várias combinações destes, mas infelizmente não funcionaram. Depois de alterar o arquivo da unidade no disco, sempre reiniciei o sistema (OS) para verificar se as alterações aplicadas funcionam. Toda vez que eu era capaz de escrever aproximadamente o mesmo número de datagramas antes de bloquear. Aproximadamente porque o comprimento do datagrama pode variar com poucos bytes, assim, por exemplo, às vezes eu era capaz de escrever 508 datagramas e o outro tempo 483.

Alguém sabe qual é a maneira correta?

    
por Al Bundy 12.09.2018 / 11:20

0 respostas