Tenho um HDD grande e lento e um SSD pequeno e rápido. Isso se refere a leituras, não a RAID . Meu desktop trava quase até parar ao retornar ao Firefox ou às páginas de manual após (re)carregar mais de 12 GiB de árvores de compilação do kernel Linux e 39 GiB no total de LLMs diferentes no SSD, enquanto eu só tenho 31 GiB de RAM:
$ free -h
total used free shared buff/cache available
Mem: 31Gi 10Gi 2.4Gi 1.0Gi 19Gi 20Gi
Swap: 0B 0B 0B
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1.7G 0 part /boot
└─sda3 8:3 0 1.8T 0 part
└─sda3_crypt 254:0 0 1.8T 0 crypt
├─vgubuntu-root 254:1 0 1.8T 0 lvm /
└─vgubuntu-swap_1 254:2 0 1.9G 0 lvm
nvme0n1 259:0 0 953.9G 0 disk
└─nvme0n1p1 259:1 0 100G 0 part
└─luks-... 254:3 0 100G 0 crypt /media/...
$ sysctl vm.swappiness
vm.swappiness = 60
O SSD é rápido, então prefiro que o Linux remova os arquivos em cache de página do SSD primeiro. O tempo de leitura sem cache é de segundos, de qualquer forma. O que deve impedir é a remoção de qualquer arquivo em /usr
ou /home
. Meus man bash
arquivos e dpkg -S bin/bash
retornam instantaneamente do cache de página, mas sem cache, levam meio minuto após sair dos LLMs. Mais gravemente, o Firefox precisa da minha ~/.mozilla
pasta para histórico e cache; com ela sem cache, esperar a barra de endereços funcionar leva minutos.
Estou procurando uma opção de configuração. systemd-run
Poderia definir MemoryMax para ktorrent
, mas reinicio frequentemente llama-server
para alternar entre os LLMs de ~6 GiB e não quero um daemon separado para manter o cgroup ativo. Os problemas man
com e dpkg
serão corrigidos quando meu /
sistema migrar para o SSD, assim que eu resolver fscrypt
meus problemas; enquanto isso, o /usr
LLM tmpfs
deixaria RAM disponível insuficiente e overlayfs
seria muito complexo. A carga de trabalho do LLM poderia, mas não deveria, remontar o SSD como uma solução alternativa. Isso deixa a nice
carga de trabalho de compilação do kernel em d ainda limpando o cache do meu navegador web.
Procurei /sys/block
, mas não consegui encontrar a configuração correta. O Cgroups v2 tem opções por dispositivo, mas apenas para cargas de trabalho de gravação paralelas ( io.max
), não para controlar como as cargas de trabalho sequenciais afetam o cache. Um patch de 2011 e uma pergunta de 2023 não veem nenhuma interface de espaço do usuário. Qual configuração pode ser usada para forçar a remoção do cache de páginas do SSD antes do cache do HDD?
Executar o programa
nocache
pode ajudar com isso. Não funciona com todos os programas (devido à necessidade de se conectar aos componentes internos da glibc), mas ajuda com alguns.Como alternativa, use
vmtouch
para remover manualmente o arquivo do modelo anterior após sair do llama-server, antes de carregar o novo.