Como atribuir taxas de atribuição dirfferent a diferentes arquivos de troca no linux?

0

Eu preciso de dois arquivos de troca, um na minha unidade ssd (o arquivo ssd-swap) e o outro na minha unidade de disco rígido (o arquivo hdd-swap). Como a velocidade de leitura / gravação no meu ssd é cerca de 4 vezes mais rápida que o meu hdd, eu preciso do sistema para alocar dados no ssd-swap 4 vezes mais do que no hdd-swap, para tirar o máximo de velocidade do dois arquivos de troca. Por exemplo, se o sistema precisar de 5 GB de espaço de troca, eu quero que ele use 4 GB do ssd-swap e 1 GB do hdd-swap. Mas como as minhas experiências mostraram, a quantidade de datas escritas é a mesma nos dois arquivos de swap (2.5GB para cada um dos arquivos de troca mencionados no exemplo).

Eu sei que uma solução é criar quatro arquivos de troca no ssd e um arquivo de troca na unidade de disco rígido (para que o sistema grave 1GB de dados em cada arquivo de troca no exemplo acima, resultando em 4GB para ssd, enquanto 1GB para hdd). Mas eu prefiro usar apenas dois arquivos de troca, só porque eu prefiro um sistema de arquivos menos povoado.

Existe alguma maneira em configurações de arquivos de troca de Linux para conseguir tal reutilização?

    
por Hedayat Mahdipour 26.10.2017 / 18:09

1 resposta

1

Primeiro, vale a pena ressaltar que algumas pessoas tentarão alegar que a troca por um SSD é uma má ideia. Esse costumava ser o caso quando os SSDs eram altamente limitados em termos de gravação, mas não é o caso nos dias de hoje (a maioria dos SSDs é avaliada em mais de mil vezes sua capacidade de resistência à gravação, e um arquivo de permuta normalmente é uma pequena fração da capacidade ), e menos ainda se você não está trocando regularmente e você não deve estar trocando regularmente em qualquer sistema moderno). Como um exemplo um pouco concreto, um típico SSD de 250GB atualmente é avaliado em mais de 100TB de gravações. Com o comportamento de troca padrão e o uso típico de desktops ou servidores em um sistema adequadamente provisionado, você terá uma média de alguns MB de uso de swap em um dia, o que significa menos de 1/100000 da classificação do dispositivo. Além disso, a maioria dos problemas pode ser atenuada especificando a opção discard na entrada /etc/fstab da região de troca (ou adicionando -d ao comando swapon ).

Em segundo lugar, não é tecnicamente possível aumentar o desempenho percebido ao intercalar dispositivos de swap como este (que é o que você parece querer fazer com base na sua resposta a esta resposta). Isso é mais facilmente ilustrado com uma analogia: suponha que você tem duas pessoas que se oferecem para armazenar coisas para você, pode armazenar muitas coisas muito rapidamente e devolvê-las rapidamente também, enquanto a outra pode armazenar apenas algumas coisas, e é muito mais lento. Se você só precisa armazenar um grupo muito grande de coisas de uma só vez, e só precisa recuperar tudo de uma vez, o método ideal é distribuir um número proporcional de itens para cada um, de modo que leve o mesmo tempo. para armazenar o que eles receberam. No entanto, essa estratégia se desfaz se você precisar armazenar e recuperar itens individuais, porque acabará perdendo tempo com a pessoa lenta de vez em quando. Nesse caso, o método ideal é dar à pessoa rápida coisas que você precisará armazenar e recuperar com frequência, e as coisas lentas que você não precisará com muita frequência.

Trocar para o disco é como o segundo caso, com duas restrições adicionais, você não tem idéia do que vai precisar com frequência e do que não vai (você pode ter alguma idéia do uso real do sistema, mas isso é muito difícil, e como resultado, nada faz isso), e você não tem idéia do quanto você precisará armazenar. Nesse caso, é mais eficiente armazenar tudo com a pessoa rápida, desde que ela tenha espaço, e armazenar o excesso com a pessoa lenta.

Devido a isso, é melhor em quase todos os casos priorizar a troca para o SSD com a exclusão do disco rígido. Felizmente, fazer isso é realmente muito fácil com o Linux. O espaço de troca (arquivos e partições) pode ter prioridades razoavelmente arbitrárias que ditam a ordem preferida de uso. Eles são definidos com a opção -p para swapon e a opção prio= em /etc/fstab . Por padrão, tudo tem uma prioridade de -1, o que significa que eles são usados na ordem em que foram ativados. Ao definir uma prioridade maior que a negativa, você pode controlar em que ordem as coisas serão usadas. Alternar regiões com prioridades mais altas (até 32767 máximas) serão usadas antes de prioridades mais baixas, e regiões com a mesma prioridade serão usadas em uma prioridade. forma round-robin (como uma configuração RAID0, mas com uma granularidade maior e sem paralelização).

Supondo que você ainda esteja certo de que deseja colocar alguns dos seus dados no dispositivo mais lento, mesmo que haja espaço no mais rápido, você também pode conseguir isso com prioridades, definindo todas as regiões com a mesma prioridade -1, mas infelizmente você vai precisar de vários arquivos para fazer isso (em teoria, você pode ser realmente criativo com dispositivos de loop ou alvos de mapeamento de dispositivo, mas isso realmente é mais problemático do que vale a pena).

Um pouco fora do tópico, mas certifique-se de que seus arquivos de swap sejam de propriedade do usuário e grupo raiz, e sejam legíveis e graváveis pelo root, caso contrário, usuários arbitrários podem travar seu sistema de forma trivial (ou acessar os dados que devem t).

    
por 26.10.2017 / 21:38