{"id":35920,"date":"2019-10-31T22:07:35","date_gmt":"2019-10-31T19:07:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\/"},"modified":"2019-10-31T22:07:35","modified_gmt":"2019-10-31T19:07:35","slug":"nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","title":{"rendered":"Configura\u00e7\u00e3o de par\u00e2metros do n\u00facleo Linux para otimiza\u00e7\u00e3o do PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Configura\u00e7\u00e3o de par\u00e2metros do n\u00facleo Linux para otimiza\u00e7\u00e3o do PostgreSQL\" src=\"\/wp-content\/uploads\/2019\/07\/a28458ff50cdc517aad71b47adab6eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/> O desempenho ideal do PostgreSQL depende da configura\u00e7\u00e3o correta dos par\u00e2metros do sistema operacional. Par\u00e2metros inadequados do n\u00facleo do SO podem levar \u00e0 redu\u00e7\u00e3o do desempenho do servidor de banco de dados. Portanto, \u00e9 essencial que esses par\u00e2metros sejam ajustados de acordo com o servidor de banco de dados e sua carga de trabalho. Neste post, discutiremos alguns par\u00e2metros importantes do n\u00facleo do Linux que podem impactar o desempenho do servidor de banco de dados e como configur\u00e1-los.<\/p>\n<h2>SHMMAX \/ SHMALL<\/h2>\n<p>\n<b>SHMMAX<\/b> \u00e9 um par\u00e2metro do n\u00facleo usado para determinar o tamanho m\u00e1ximo de um \u00fanico segmento de mem\u00f3ria compartilhada que um processo Linux pode alocar. At\u00e9 a vers\u00e3o 9.2, o PostgreSQL usava System V (SysV), para o qual \u00e9 necess\u00e1rio configurar o SHMMAX. Ap\u00f3s 9.2, o PostgreSQL mudou para mem\u00f3ria compartilhada POSIX. Portanto, agora \u00e9 necess\u00e1rio menos bytes de mem\u00f3ria compartilhada SysV.<\/p>\n<p>At\u00e9 a vers\u00e3o 9.3, o SHMMAX era o par\u00e2metro mais importante do n\u00facleo. O valor do SHMMAX \u00e9 definido em bytes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDa mesma forma, <b>SHMALL<\/b> \u00e9 outro par\u00e2metro do n\u00facleo usado para determinar <br \/>\no volume total de p\u00e1ginas de mem\u00f3ria compartilhada do sistema. Para visualizar os valores atuais de SHMMAX, SHMALL ou SHMMIN, use o comando <i>ipcs<\/i>.<\/p>\n<p><b>Detalhes de SHM* \u2014 Linux<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -lm\n\n------ Limites de Mem\u00f3ria Compartilhada --------\nmax n\u00famero de segmentos = 4096\nmax tamanho de segmento (kbytes) = 1073741824\nmax total de mem\u00f3ria compartilhada (kbytes) = 17179869184\nmin tamanho de segmento (bytes) = 1<\/code><\/pre>\n<p>\n<b>Detalhes de SHM* \u2014 MacOS X<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -M\nEstado IPC a partir de as de Qui, 16 de Ago 22:20:35 PKT 2018\nshminfo:\n\tshmmax: 16777216\t(tamanho m\u00e1ximo do segmento de mem\u00f3ria compartilhada)\n\tshmmin:       1\t(tamanho m\u00ednimo do segmento de mem\u00f3ria compartilhada)\n\tshmmni:      32\t(n\u00famero m\u00e1ximo de identificadores de mem\u00f3ria compartilhada)\n\tshmseg:       8\t(n\u00famero m\u00e1ximo de segmentos de mem\u00f3ria compartilhada por processo)\n\tshmall:    1024\t(quantidade m\u00e1xima de mem\u00f3ria compartilhada em p\u00e1ginas)\n<\/code><\/pre>\n<p>\nO PostgreSQL usa <b>System V IPC<\/b> para alocar mem\u00f3ria compartilhada. Este par\u00e2metro \u00e9 um dos mais importantes do n\u00facleo. Sempre que voc\u00ea recebe as seguintes mensagens de erro, isso significa que voc\u00ea tem uma vers\u00e3o mais antiga do PostgreSQL e um valor SHMMAX muito baixo. Espera-se que os usu\u00e1rios ajustem e aumentem o valor de acordo com a mem\u00f3ria compartilhada que pretendem usar.<\/p>\n<h3>Poss\u00edveis erros de configura\u00e7\u00e3o incorreta<\/h3>\n<p>\nSe o SHMMAX estiver configurado incorretamente, voc\u00ea pode receber um erro ao tentar inicializar um cluster PostgreSQL usando o comando <i>initdb<\/i>.<\/p>\n<p><b>Falha no initdb<\/b><br \/>\n<code>DETALHE: A chamada de sistema falhou foi shmget(key=1, size=2072576, 03600). <\/p>\n<p>DICA: Este erro geralmente significa que o pedido do PostgreSQL para um segmento de mem\u00f3ria compartilhada excedeu o par\u00e2metro SHMMAX do seu n\u00facleo.\u00a0 <br \/>\nVoc\u00ea pode reduzir o tamanho da solicita\u00e7\u00e3o ou reconfigurar o n\u00facleo com um SHMMAX maior. Para reduzir o tamanho da solicita\u00e7\u00e3o (atualmente 2072576 bytes), <br \/>\nreduza o uso de mem\u00f3ria compartilhada do PostgreSQL, possivelmente reduzindo shared_buffers ou max_connections. <\/p>\n<p>Se o tamanho da solicita\u00e7\u00e3o j\u00e1 for pequeno, pode ser que seja menor que o par\u00e2metro SHMMIN do seu n\u00facleo,<br \/>\nnesse caso, aumentar o tamanho da solicita\u00e7\u00e3o ou reconfigurar o SHMMIN \u00e9 necess\u00e1rio. <\/p>\n<p>A documenta\u00e7\u00e3o do PostgreSQL cont\u00e9m mais informa\u00e7\u00f5es sobre a configura\u00e7\u00e3o de mem\u00f3ria compartilhada. O processo filho saiu com o c\u00f3digo de sa\u00edda 1.<\/code><\/p>\n<p>Da mesma forma, voc\u00ea pode receber um erro ao iniciar o servidor PostgreSQL usando o comando <i>pg_ctl<\/i>.<\/p>\n<p><b>Falha no pg_ctl<\/b><br \/>\n<code>DETALHE: A chamada de sistema falhou foi shmget(key=5432001, size=14385152, 03600).<\/p>\n<p>DICA: Este erro geralmente significa que o pedido do PostgreSQL para um segmento de mem\u00f3ria compartilhada excedeu o par\u00e2metro SHMMAX do seu n\u00facleo.<\/p>\n<p>Voc\u00ea pode reduzir o tamanho da solicita\u00e7\u00e3o ou reconfigurar o n\u00facleo com um SHMMAX maior. Para reduzir o tamanho da solicita\u00e7\u00e3o (atualmente 14385152 bytes), reduza o uso de mem\u00f3ria compartilhada do PostgreSQL, possivelmente reduzindo shared_buffers ou max_connections.<\/p>\n<p>Se o tamanho da solicita\u00e7\u00e3o j\u00e1 for pequeno, pode ser que seja menor que o par\u00e2metro SHMMIN do seu n\u00facleo, <br \/>\nnesse caso, aumentar o tamanho da solicita\u00e7\u00e3o ou reconfigurar o SHMMIN \u00e9 necess\u00e1rio.<\/p>\n<p>A documenta\u00e7\u00e3o do PostgreSQL cont\u00e9m mais informa\u00e7\u00f5es sobre a configura\u00e7\u00e3o de mem\u00f3ria compartilhada.<\/code><\/p>\n<h3>Compreendendo as diferen\u00e7as nas defini\u00e7\u00f5es<\/h3>\n<p>\nA defini\u00e7\u00e3o dos par\u00e2metros SHMMAX\/SHMALL \u00e9 ligeiramente diferente no Linux e no MacOS X:<\/p>\n<ul>\n<li>Linux: kernel.shmmax, kernel.shmall<\/li>\n<li>MacOS X: kern.sysv.shmmax, kern.sysv.shmall<\/li>\n<\/ul>\n<p>\nTime <i>sysctl<\/i> pode ser usado para alterar temporariamente o valor. Para definir valores permanentes, adicione uma entrada em <i>\/etc\/sysctl.conf<\/i>. Mais detalhes est\u00e3o abaixo.<\/p>\n<p><b>Altera\u00e7\u00e3o dos par\u00e2metros do n\u00facleo no MacOS X<\/b><\/p>\n<pre><code class=\"plaintext\"># Get the value of SHMMAX\nsudo sysctl kern.sysv.shmmax\nkern.sysv.shmmax: 4096\n\n# Get the value of SHMALL\nsudo sysctl kern.sysv.shmall \nkern.sysv.shmall: 4096\n\n# Set the value of SHMMAX\nsudo sysctl -w kern.sysv.shmmax=16777216\nkern.sysv.shmmax: 4096 -&gt; 16777216\n\n# Set the value of SHMALL \nsudo sysctl -w kern.sysv.shmall=16777216\nkern.sysv.shmall: 4096 -&gt; 16777216<\/code><\/pre>\n<p>\n<b>Altera\u00e7\u00e3o dos par\u00e2metros do n\u00facleo no Linux<\/b><\/p>\n<pre><code class=\"plaintext\"># Get the value of SHMMAX\nsudo sysctl kernel.shmmax\nkernel.shmmax: 4096\n\n# Get the value of SHMALL\nsudo sysctl kernel.shmall\nkernel.shmall: 4096\n\n# Set the value of SHMMAX\nsudo sysctl -w kernel.shmmax=16777216\nkernel.shmmax: 4096 -&gt; 16777216\n\n# Set the value of SHMALL \nsudo sysctl -w kernel.shmall=16777216\nkernel.shmall: 4096 -&gt; 16777216<\/code><\/pre>\n<p>\n<b>N\u00e3o se esque\u00e7a<\/b>: para tornar as altera\u00e7\u00f5es permanentes, adicione esses valores em \/etc\/sysctl.conf<\/p>\n<h2>P\u00e1ginas grandes (Huge Pages)<\/h2>\n<p>\nNo Linux, por padr\u00e3o, s\u00e3o usadas p\u00e1ginas de mem\u00f3ria de 4 KB, no BSD \u2014 <i>Super Pages<\/i>, e no Windows \u2014 <i>Large Pages<\/i>. Uma p\u00e1gina \u00e9 uma parte da mem\u00f3ria RAM alocada para um processo. Um processo pode ter v\u00e1rias p\u00e1ginas, dependendo das exig\u00eancias de mem\u00f3ria. Quanto mais mem\u00f3ria um processo precisar, mais p\u00e1ginas lhe s\u00e3o alocadas. O sistema operacional mant\u00e9m uma tabela de aloca\u00e7\u00e3o de p\u00e1ginas para processos. Quanto menor o tamanho da p\u00e1gina, maior a tabela, e mais tempo leva para procurar uma p\u00e1gina nesta tabela de p\u00e1ginas. Portanto, p\u00e1ginas grandes permitem o uso de uma grande quantidade de mem\u00f3ria com despesas gerais reduzidas; menos acessos \u00e0s p\u00e1ginas, menos erros de p\u00e1gina, opera\u00e7\u00f5es de leitura\/escrita mais r\u00e1pidas atrav\u00e9s de buffers maiores. Como resultado, ocorre uma melhoria no desempenho.<\/p>\n<p>O PostgreSQL suporta grandes p\u00e1ginas apenas no Linux. Por padr\u00e3o, o Linux usa p\u00e1ginas de mem\u00f3ria de 4 KB, ent\u00e3o em casos onde h\u00e1 muitas opera\u00e7\u00f5es com mem\u00f3ria, \u00e9 necess\u00e1rio definir p\u00e1ginas maiores. Observa-se um ganho de desempenho ao usar grandes p\u00e1ginas de 2 MB at\u00e9 1 GB. O tamanho da grande p\u00e1gina pode ser definido durante a inicializa\u00e7\u00e3o. Voc\u00ea pode facilmente verificar os par\u00e2metros das grandes p\u00e1ginas e seu uso no seu computador Linux usando o comando <i>cat \/proc\/meminfo | grep -i huge<\/i>.<\/p>\n<p><b>Obtendo informa\u00e7\u00f5es sobre grandes p\u00e1ginas (apenas no Linux)<\/b><\/p>\n<pre><code class=\"bash\">Nota: Isso \u00e9 apenas para Linux, para outros sistemas operacionais essa opera\u00e7\u00e3o \u00e9 ignorada$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:       0\nHugePages_Free:        0\nHugePages_Rsvd:       0\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nNeste exemplo, embora o tamanho da grande p\u00e1gina esteja definido como 2048 (2 MB), o n\u00famero total de grandes p\u00e1ginas \u00e9 0. Isso significa que as grandes p\u00e1ginas est\u00e3o desativadas.<\/p>\n<h3>Script para determinar o n\u00famero de grandes p\u00e1ginas<\/h3>\n<p>\nEste \u00e9 um script simples que retorna o n\u00famero necess\u00e1rio de grandes p\u00e1ginas. Execute o script no seu servidor Linux enquanto o PostgreSQL estiver em execu\u00e7\u00e3o. Certifique-se de que a vari\u00e1vel de ambiente <i>$PGDATA<\/i> est\u00e1 definida para o diret\u00f3rio de dados do PostgreSQL.<\/p>\n<p><b>Obtendo o n\u00famero de grandes p\u00e1ginas necess\u00e1rias<\/b><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\npid=`head -1 $PGDATA\/postmaster.pid`\necho \"Pid:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $pid\"\npeak=`grep ^VmPeak \/proc\/$pid\/status | awk '{ print $2 }'`\necho \"VmPeak:\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $peak kB\"\nhps=`grep ^Hugepagesize \/proc\/meminfo | awk '{ print $2 }'`\necho \"Hugepagesize:\u00a0\u00a0 $hps kB\"\nhp=$((peak\/hps))\necho Set Huge Pages:\u00a0\u00a0\u00a0\u00a0 $hp<\/code><\/pre>\n<p>\nA sa\u00edda do script \u00e9 a seguinte:<\/p>\n<p><b>Sa\u00edda do script<\/b><\/p>\n<pre><code class=\"bash\">Pid:            12737\nVmPeak:        180932 kB\nHugepagesize:  2048 kB\nSet Huge Pages: 88<\/code><\/pre>\n<p>\nO valor recomendado para grandes p\u00e1ginas \u00e9 88, ent\u00e3o voc\u00ea deve definir 88.<\/p>\n<p><b>Definindo grandes p\u00e1ginas<\/b><\/p>\n<pre><code class=\"bash\">sysctl -w vm.nr_hugepages=88<\/code><\/pre>\n<p>\nVerifique as grandes p\u00e1ginas agora, voc\u00ea ver\u00e1 que as grandes p\u00e1ginas n\u00e3o est\u00e3o sendo usadas (HugePages_Free = HugePages_Total).<\/p>\n<p><b>Mais uma vez, informa\u00e7\u00f5es sobre grandes p\u00e1ginas (apenas no Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       88\nHugePages_Rsvd:       0\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nAgora defina o par\u00e2metro huge_pages como \"on\" em $PGDATA\/postgresql.conf e reinicie o servidor.<\/p>\n<p><b>E novamente, informa\u00e7\u00f5es sobre grandes p\u00e1ginas (apenas no Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       81\nHugePages_Rsvd:       64\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nAgora voc\u00ea pode ver que muito poucas grandes p\u00e1ginas est\u00e3o sendo usadas. Vamos tentar adicionar alguns dados ao banco de dados.<\/p>\n<p><b>Algumas opera\u00e7\u00f5es com o banco de dados para a utiliza\u00e7\u00e3o de grandes p\u00e1ginas<\/b><\/p>\n<pre><code class=\"sql\">postgres=# CREATE TABLE foo(a INTEGER);\nCREATE TABLE\npostgres=# INSERT INTO foo VALUES(generate_Series(1,10000000));\nINSERT 0 10000000<\/code><\/pre>\n<p>\nVamos ver se estamos usando mais grandes p\u00e1ginas do que antes.<\/p>\n<p><b>Mais uma vez, informa\u00e7\u00f5es sobre grandes p\u00e1ginas (apenas no Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       18\nHugePages_Rsvd:       1\nHugePages_Surp:      0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nAgora voc\u00ea pode ver que a maioria das grandes p\u00e1ginas est\u00e1 sendo usada.<\/p>\n<p>Nota: o valor aproximado para HugePages usado aqui \u00e9 muito baixo, o que n\u00e3o \u00e9 um valor normal para uma m\u00e1quina em ambiente de produ\u00e7\u00e3o. Por favor, avalie a quantidade necess\u00e1ria de p\u00e1ginas para o seu sistema e configure-as de acordo com a carga e os recursos.<\/p>\n<h3>vm.swappiness<\/h3>\n<p>\n<b>vm.swappiness<\/b> \u2014 este \u00e9 mais um par\u00e2metro do kernel que pode influenciar o desempenho do banco de dados. Esse par\u00e2metro \u00e9 usado para gerenciar o comportamento da troca (swappiness) (pagina\u00e7\u00e3o de p\u00e1ginas para dentro e para fora da mem\u00f3ria) no Linux. O valor varia de 0 a 100. Ele determina quanto da mem\u00f3ria ser\u00e1 descartado ou liberado. Zero significa que a troca est\u00e1 desativada, enquanto 100 significa uma troca agressiva.<\/p>\n<p>Voc\u00ea pode obter um bom desempenho configurando valores mais baixos.<\/p>\n<p>Definir o valor 0 em kernels mais novos pode fazer com que o OOM Killer (processo de limpeza de mem\u00f3ria no Linux) mate o processo. Assim, pode-se definir com seguran\u00e7a o valor 1, se desejar minimizar a troca. O valor padr\u00e3o no Linux \u00e9 60. Um valor mais alto faz com que o MMU (unidade de gerenciamento de mem\u00f3ria) use mais espa\u00e7o de troca do que a RAM, enquanto um valor mais baixo mant\u00e9m mais dados\/c\u00f3digo na mem\u00f3ria.<\/p>\n<p>Um valor menor \u00e9 uma boa aposta para melhorar o desempenho no PostgreSQL.<\/p>\n<h3>vm.overcommit_memory \/ vm.overcommit_ratio<\/h3>\n<p>\nAplicativos obt\u00eam mem\u00f3ria e a liberam quando n\u00e3o precisam mais dela. Mas em alguns casos, um aplicativo obt\u00e9m mem\u00f3ria demais e n\u00e3o a libera. Isso pode provocar o OOM killer. Aqui est\u00e3o os poss\u00edveis valores do par\u00e2metro <b>vm.overcommit_memory<\/b> com uma descri\u00e7\u00e3o para cada um:<\/p>\n<ol>\n<li> Overcommit heur\u00edstico (padr\u00e3o); heur\u00edstica baseada no kernel<\/li>\n<li> Permitir overcommit em qualquer caso<\/li>\n<li> N\u00e3o exagere, n\u00e3o ultrapasse a taxa de overcommit.<\/li>\n<\/ol>\n<p>\n<i>Link: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/vm\/overcommit-accounting\">https:\/\/www.kernel.org\/doc\/Documentation\/vm\/overcommit-accounting<\/a><\/noindex><\/i><\/p>\n<p><b>vm.overcommit_ratio<\/b> \u2014 porcentagem da mem\u00f3ria RAM dispon\u00edvel para sobrecarga excessiva. Um valor de 50% em um sistema com 2 GB de RAM pode alocar at\u00e9 3 GB de RAM.<\/p>\n<p>Um valor de 2 para vm.overcommit_memory oferece melhor desempenho para PostgreSQL. Esse valor maximiza o uso da mem\u00f3ria RAM pelo processo do servidor sem risco significativo de ser encerrado pelo processo OOM killer. O aplicativo poder\u00e1 reiniciar, mas apenas dentro do limite do excedente, reduzindo o risco de o OOM killer encerrar o processo. Portanto, um valor de 2 proporciona melhor desempenho do que o valor padr\u00e3o de 0. No entanto, a confiabilidade pode ser melhorada, pois a mem\u00f3ria al\u00e9m do limite permitido n\u00e3o ser\u00e1 sobrecarregada. Isso elimina o risco de o processo ser encerrado pelo OOM killer.<\/p>\n<p>Em sistemas sem swap, pode ocorrer um problema com vm.overcommit_memory igual a 2.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT\">https:\/\/www.postgresql.org\/docs\/current\/static\/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT<\/a><\/noindex><\/p>\n<h3>vm.dirty_background_ratio \/ vm.dirty_background_bytes<\/h3>\n<p>\n<b>vm.dirty_background_ratio<\/b> \u2014 \u00e9 a porcentagem de mem\u00f3ria preenchida com p\u00e1ginas sujas que precisam ser gravadas no disco. A grava\u00e7\u00e3o no disco \u00e9 feita em segundo plano. O valor desse par\u00e2metro varia de 0 a 100; no entanto, um valor abaixo de 5 pode ser ineficaz, e alguns kernels n\u00e3o o suportam. 10 \u00e9 o valor padr\u00e3o na maioria dos sistemas Linux. Voc\u00ea pode aumentar o desempenho para opera\u00e7\u00f5es de grava\u00e7\u00e3o intensiva com uma propor\u00e7\u00e3o menor, o que significa que o Linux gravar\u00e1 p\u00e1ginas sujas em segundo plano.<\/p>\n<p>Voc\u00ea precisa definir o valor <b>vm.dirty_background_bytes<\/b> de acordo com a velocidade do seu disco.<\/p>\n<p>Para esses dois par\u00e2metros, n\u00e3o h\u00e1 'bons' valores, pois ambos dependem do hardware. No entanto, definir vm.dirty_background_ratio para 5 e vm.dirty_background_bytes para 25% da velocidade do disco melhora o desempenho em cerca de 25% na maioria dos casos.<\/p>\n<h3>vm.dirty_ratio \/ dirty_bytes<\/h3>\n<p>\nIsso \u00e9 o mesmo que <b>vm.dirty_background_ratio \/ dirty_background_bytes<\/b>, exceto que a grava\u00e7\u00e3o \u00e9 feita durante a sess\u00e3o ativa, bloqueando o aplicativo. Portanto, vm.dirty_ratio deve ser superior a <b>vm.dirty_background_ratio<\/b>. Isso garante que os processos em segundo plano sejam iniciados mais cedo para evitar o bloqueio m\u00e1ximo do aplicativo. Voc\u00ea pode ajustar a diferen\u00e7a entre essas duas raz\u00f5es com base na carga de E\/S do disco.<\/p>\n<h2>Resultado<\/h2>\n<p>\nVoc\u00ea pode ajustar outras configura\u00e7\u00f5es para aumentar o desempenho, mas as melhorias ser\u00e3o m\u00ednimas e os benef\u00edcios n\u00e3o ser\u00e3o significativos. Devemos lembrar que nem todas as configura\u00e7\u00f5es se aplicam a todos os tipos de aplicativos. Alguns aplicativos funcionam melhor quando ajustamos certas configura\u00e7\u00f5es, enquanto outros n\u00e3o. Voc\u00ea deve encontrar um equil\u00edbrio adequado entre as configura\u00e7\u00f5es dessas op\u00e7\u00f5es para a carga de trabalho esperada e o tipo de aplicativo, al\u00e9m de levar em conta o comportamento do sistema operacional ao configur\u00e1-las. Ajustar as configura\u00e7\u00f5es do kernel n\u00e3o \u00e9 t\u00e3o simples quanto ajustar as configura\u00e7\u00f5es do banco de dados: aqui \u00e9 mais complicado fornecer recomenda\u00e7\u00f5es.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458860\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c PostgreSQL \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043b\u043e\u0445\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0434\u0440\u0430 \u041e\u0421 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u044b\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0434\u0440\u0430 Linux, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26870,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35920","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 Linux \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:07:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:07:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Configura\u00e7\u00e3o das op\u00e7\u00f5es do kernel Linux para otimiza\u00e7\u00e3o do PostgreSQL | ProHoster","description":"Desempenho ideal.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 Linux \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 PostgreSQL | ProHoster","og:description":"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:07:35+00:00","article:modified_time":"2019-10-31T19:07:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35920","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:53:32","updated":"2026-01-22 01:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=35920"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35920\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26870"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=35920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=35920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=35920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}