Qual é a política de modo de gravação usada no Ubuntu?

2

Existe alguma maneira de ver se o Ubuntu usa a diretiva write through ou write back?

Eu sei que escrever de volta é muito melhor, mas quando eu escrevo um programa em C para testar o cache, parece que o Ubuntu usa escrever.

UPDATE: Quero dizer, é o Cache da CPU e não o cache do sistema de arquivos. O que me preocupa é a política de escrever para armazenar em cache L1, L2, L3 e a RAM. Obrigado!.

    
por boh 05.10.2012 / 11:50

3 respostas

2

Em um cache write-back, quando são feitas alterações nos dados em cache, eles também não são feitos simultaneamente para os dados originais. Em vez disso, os dados alterados são marcados e os dados originais são atualizados quando os dados capturados são desalocados.

Em um cache write-through, por contraste as alterações feitas nos dados em cache são feitas simultaneamente na cópia original. Um cache write-back pode executar mais rapidamente que um cache write-through. Mas, em alguns contextos, as diferenças entre os dados armazenados em cache e os originais podem causar problemas, e os caches de gravação devem ser usados

fonte

Agora, não importa qual sistema operacional você está trabalhando, o que realmente afeta é o sistema de arquivos que você está usando.

O Ubuntu, por padrão, usa o ext4 como sistema de arquivos e para conhecer o ext4 usa os dois modos write-back e write-through .

Para ativar o modo de write back

Executar :

 tune2fs -o journal_data_writeback /dev/sd*

Editar fstab

vi -w /mnt/sdXY/etc/fstab

Encontre a linha que faz referência a sd * Ela será parecida com:

# /dev/sda2
UUID=be2f0ac2-4683-4550-bcd1-704a1a840b3e / ext4 relatime,errors=remount-ro 0 1
  

A primeira entrada é o UUID.

     

A segunda entrada é o caminho.

     

O terceiro é o fstype.

     

Em quarto lugar estão as opções.

     

Quinto é para despejo

     

O sexto é passar.

Altere as opções (4ª) para:

noatime,data=writeback,barrier=0,nobh,errors=remount-ro

Reinicialize seu sistema para concluir as alterações.

source

Verifique também este para obter mais informações.

    
por user61928 05.10.2012 / 12:25
2

Você também pode consultar o modo "data=" atual consultando / proc / mounts. Aqui está um exemplo do meu laptop:

$ grep ext /proc/mounts 
/dev/mapper/crypt-root / ext4 rw,noatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
/dev/mapper/vg0-boot /boot ext4 rw,nosuid,nodev,noexec,noatime,user_xattr,barrier=1,data=ordered 0 0
/dev/mapper/crypt-homes /home ext4 rw,nosuid,noatime,user_xattr,acl,commit=60,barrier=1,data=ordered 0 0

Além disso, observe que "nobh" é uma opção de montagem obsoleta.

    
por Simon Déziel 05.10.2012 / 19:09
0

Você também pode ver se usar os O_SYNC | O_DIRECT flags em open () é o que você deseja. O manual indica:

"O sinalizador O_DIRECT sozinho faz um esforço para transferir dados de forma síncrona, mas não fornece as garantias do sinalizador O_SYNC de que dados e metadados necessários são transferidos. Para garantir E / S síncrona, O_SYNC deve ser usado além de O_DIRECT. "

Veja o homem 2 aberto para mais detalhes.

    
por Colin Ian King 06.10.2012 / 11:37