Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-24 Conversa Narcis Garcia

El 23/7/23 a les 10:19, Alex Muntada ha escrit:

A on vull anar a parar amb tot això és a, si resulta que un
capçal llegeix i escriu, per exemple, 4 MiB a cada demanda, és
molt ineficient establir trossos/chunks de RAID de 512 KiB, ja
que el sistema operatiu demanarà 8 vegades la mateixa operació
al capçal per a llegir o escriure cada subdivisió dels 4 MiB.


Estàs pensant només en les operacions de lectura i escriptura,
però els raids fan més coses (càlculs d'integritat, redundància,
etc.) i potser la mida per defecte del chunk té en compte tot
plegat, fins i tot la compatibilitat entre versions (com apunta
el man).

De totes maneres, la millor forma de veure si un escenari concret
millora el rendiment és fer-ne mesures i comparar-les amb unes
altres de referència. Si aconsegueixes esbrinar quina és la mida
de bloc del capçal d'un disc i obtens millor rendiment, no deixis
de compartir-ho amb nosaltres, si et plau.

Ho faré.
La gran majoria de vegades implemento RAID0, altres RAID1 i 
combinacions, perquè sempre m'ha decebut el fre dels càlculs.


Per tot el què he llegit, dedueixo que cal separar:

1. Els discs rotatius, que tenen les pistes com a separador per al 
treball físic del capçal. Aquí caldria assumir com a bloc: la 
pista/cilindre. Indiferent si són òptics, durs, etc.

https://en.wikipedia.org/wiki/Cylinder-head-sector
Amb això crec que tenien raó els què buscaven l'alineació de les 
particions abans que es passés de moda.

Pot fer falta revisar la correspondència amb l'adreçament LBA.

2. Les unitats sòlides (SSD i USB) en el cas de la tecnologia NAND 
organitzen les escriptures en blocs de pàgines de dades, que són les 
causants de la fragmentació física entre sectors lliures i utilitzats.
Aquí cal primer esbrinar la mida de la pàgina de dades, i la mida del 
grup (bloc) de pàgines per a fer-ne un tot com a unitat del tros/chunk 
per al RAID.

https://en.wikipedia.org/wiki/Trim_(computing)

Sembla doncs que per a discs rotatius el tema és madur i fàcil, sempre i 
quan s'alinei la partició i també s'alinei el tros/chunk del RAID amb 
aquesta. Però caldria trobar alguna comanda que informi de 
l'arquitectura d'una unitat sòlida, i la seva correspondència amb 
l'adreçament LBA que fan servir els sistemes operatius.


El benefici de tot això, pot ser petit o pot ser gran, però veig molt 
clar que afecta a la velocitat d'entrada/sortida de TOTES les 
estructures lògiques.


--

Narcis Garcia

__
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should fix this against automated addresses collectors.




Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-23 Conversa Alex Muntada
Hola, Narcis:

> La frase de la Wikipedia té una falla: La definició de sector
> no està restringida a discs durs, ni mai no ho ha estat.

No crec que la definió de la viquipèdia sigui restrictiva; parla
del cas dels discs durs perquè la pàgina és sobre discs durs.

> Tinc prevista la instal·lació amb un programet (script)
> prescindint de DebianInstaller, però el què ara estic explorant
> és 1 sola personalització per a seguir amb DebianInstaller quan
> no vull complicar res més.

A les configuracions de preseed del d-i per al raid no he vist
que s'hi pugui posar la mida, així que segueixo sense veure cap
altra alternativa que no sigui early_command.

> Cap versió de DebianInstaller no m'ha preguntat mai pel
> desbloqueig d'un volum LUKS; sempre he hagut d'eliminar-lo
> i crar-lo de nou.

Crec recordar que era el partman en mode manual, però fa temps
que no ho he provat.

> A on vull anar a parar amb tot això és a, si resulta que un
> capçal llegeix i escriu, per exemple, 4 MiB a cada demanda, és
> molt ineficient establir trossos/chunks de RAID de 512 KiB, ja
> que el sistema operatiu demanarà 8 vegades la mateixa operació
> al capçal per a llegir o escriure cada subdivisió dels 4 MiB.

Estàs pensant només en les operacions de lectura i escriptura,
però els raids fan més coses (càlculs d'integritat, redundància,
etc.) i potser la mida per defecte del chunk té en compte tot
plegat, fins i tot la compatibilitat entre versions (com apunta
el man).

De totes maneres, la millor forma de veure si un escenari concret
millora el rendiment és fer-ne mesures i comparar-les amb unes
altres de referència. Si aconsegueixes esbrinar quina és la mida
de bloc del capçal d'un disc i obtens millor rendiment, no deixis
de compartir-ho amb nosaltres, si et plau.

Salut,
Alex

--
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada 
  ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature


Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-22 Conversa Narcis Garcia

Hola Àlex, responc entre línies;

El 22/7/23 a les 10:05, Alex Muntada ha escrit:

Hola, Narcis:


Aquesta és la mida de sector, que és de 512 bytes per al 90%
dels mitjans (USB, FDD, HDD, etc.) independentment de quants
bytes escrigui el capçal en una sola operació. La mida de
sector, ni la mida de bloc del sistema de fitxers, no està
vinculades a les operacions físiques.


«The sector is the minimum storage unit of a hard drive.»
https://en.wikipedia.org/wiki/Disk_sector

Entenc doncs que el capçal no escriu bytes sinó sectors.


Des que existeix el IBM PC (PC x86 i també abans) que el mínim que es 
demana a llegir directament de disc és 1 sector. Però això no és una 
limitació per al capçal, que des de bon principi ja podien operar per 
exemple amb «sectors llargs», i jo he vist des de la dècada de 1990 BIOS 
a les quals se'ls pot demanar que el disc dur allargui els 
trossos/chunks de lectura i escriptura per augmentar la velocitat 
seqüencial. No recordo bé si podien ser de 1 MiB o com s'expressa 
aquesta configuració.


La frase de la Wikipedia té una falla: La definició de sector no està 
restringida a discs durs, ni mai no ho ha estat.



No busco la mida òptima per al sistema operatiu, sinó l'òptima
per al dispositiu físic. És a dir, que si el capçal d'un disc
dur escriu com a mínim 2048 KiB, aleshores seria molt ineficient
establir blocs/chunks de 512 KiB a la capra RAID, perquè el
sistema operatiu podria demanar escriure 4 vegades el mateix
segment de disc per a emplenar-lo de dades independents de
512 KiB cada tros/chunk.


No hi ha cap menció a la mida del que escriu el capçal en aquest
article; en canvi hi ha molts d'altres factors que afecten el
rendiment físic d'un disc (tot i que els fabricants no donen pas
tots aquests detalls normalment):

https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics


Suposo els factors més proper de l'article és el «interleave».
Abans d'això suggereix que el capçal llegeix tota una pista sense pausa 
de canvi.


Fixa't que l'article s'acosta més al tema de l'eficiència de la lectura 
i escriptura quan parla de la fragmentació en unitats sòlides (SSD), 
perquè els trossos/chunks de dades sovint són més grans que els blocs 
que envia el sistema operatiu.



Em convé cal provar si el DebianInstaller preveu una
instal·lació dins un RAID que ja estigui creat abans.


A la meva anterior feina ho fèiem per a tots els servidors
(físics i virtuals), amb mdadm/lvm, etc. segons ens convenia
en cada cas. No va ser trivial arribar a un escenari que ens
funcionés perquè hi havia poca documentació sobre el tema,
però amb el temps van aconseguir tenir totes les instal·lacions
de servidors automatitzades i amb particionat a mida.

Val a dir que, en aquell escenari, utilitzàvem Foreman i Puppet
per a fer la instal·lació remota i la personalització dels scripts
de cada cas a partir de variables. Imagino que s'hauria de poder
fer quelcom similar carregant els scripts d'algun disc USB o
similar per simplificar-ho una mica.


Tinc prevista la instal·lació amb un programet (script) prescindint de 
DebianInstaller, però el què ara estic explorant és 1 sola 
personalització per a seguir amb DebianInstaller quan no vull complicar 
res més.



(per exemple, un volum encriptat no és el cas)


Imagino que també podries fer-ho si li pots passar la contrasenya
al DebianInstaller per muntar el disc abans de procedir amb la
resta de passes del early_command. De fet, el particionador et
detecta normalment el que ja tens quan fas particionat manual
(fins i tot et pregunta la contrasenya dels discs xifrats).


Cap versió de DebianInstaller no m'ha preguntat mai pel desbloqueig d'un 
volum LUKS; sempre he hagut d'eliminar-lo i crar-lo de nou.
La meva idea és fer servir el mitjà .ISO que publica Debian, sense 
modificar-lo, amb el seu DebianInstaller.
El què no he provat encara sobre això és a desbloquejar un volum LUKS 
amb un TTY diferent abans que s'obri l'assistent per a Parted.



A on vull anar a parar amb tot això és a, si resulta que un capçal 
llegeix i escriu, per exemple, 4 MiB a cada demanda, és molt ineficient 
establir trossos/chunks de RAID de 512 KiB, ja que el sistema operatiu 
demanarà 8 vegades la mateixa operació al capçal per a llegir o escriure 
cada subdivisió dels 4 MiB.
Aleshores m'interessa establir la mida del tros/chunk dels RAIDs COM A 
MÍNIM de la mida d'allò que opera el capçal. Amb això el RAID 
maximitzaria la velocitat per a fitxers d'una mida major.


El segon article que citaves ja parla de què els SSD operen amb trossos 
d'entre 256 KiB i 4 MiB. Pel què diu, fins i tot si es fessin coincidir 
els blocs del sistema de fitxers del sistema operatiu amb els trossos 
físics d'un SSD d'ús típic, no caldria trim/discard per a mantenir la 
velocitat que dóna prestigi al SSD.



Gràcies.

--

Narcis Garcia

__
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive 

Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-22 Conversa Alex Muntada
Hola, Narcis:

> Aquesta és la mida de sector, que és de 512 bytes per al 90%
> dels mitjans (USB, FDD, HDD, etc.) independentment de quants
> bytes escrigui el capçal en una sola operació. La mida de
> sector, ni la mida de bloc del sistema de fitxers, no està
> vinculades a les operacions físiques.

«The sector is the minimum storage unit of a hard drive.»
https://en.wikipedia.org/wiki/Disk_sector

Entenc doncs que el capçal no escriu bytes sinó sectors.

> No busco la mida òptima per al sistema operatiu, sinó l'òptima
> per al dispositiu físic. És a dir, que si el capçal d'un disc
> dur escriu com a mínim 2048 KiB, aleshores seria molt ineficient
> establir blocs/chunks de 512 KiB a la capra RAID, perquè el
> sistema operatiu podria demanar escriure 4 vegades el mateix
> segment de disc per a emplenar-lo de dades independents de
> 512 KiB cada tros/chunk.

No hi ha cap menció a la mida del que escriu el capçal en aquest
article; en canvi hi ha molts d'altres factors que afecten el
rendiment físic d'un disc (tot i que els fabricants no donen pas
tots aquests detalls normalment):

https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics

> Em convé cal provar si el DebianInstaller preveu una
> instal·lació dins un RAID que ja estigui creat abans.

A la meva anterior feina ho fèiem per a tots els servidors
(físics i virtuals), amb mdadm/lvm, etc. segons ens convenia
en cada cas. No va ser trivial arribar a un escenari que ens
funcionés perquè hi havia poca documentació sobre el tema,
però amb el temps van aconseguir tenir totes les instal·lacions
de servidors automatitzades i amb particionat a mida.

Val a dir que, en aquell escenari, utilitzàvem Foreman i Puppet
per a fer la instal·lació remota i la personalització dels scripts
de cada cas a partir de variables. Imagino que s'hauria de poder
fer quelcom similar carregant els scripts d'algun disc USB o
similar per simplificar-ho una mica.

> (per exemple, un volum encriptat no és el cas)

Imagino que també podries fer-ho si li pots passar la contrasenya
al DebianInstaller per muntar el disc abans de procedir amb la
resta de passes del early_command. De fet, el particionador et
detecta normalment el que ja tens quan fas particionat manual
(fins i tot et pregunta la contrasenya dels discs xifrats).

Salut,
Alex

--
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada 
  ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature


Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-21 Conversa Narcis Garcia

hola (responc entre línies)

El 21/7/23 a les 15:52, Alex Muntada ha escrit:

Hola, Narcis:


Em sorgeixen 2 dubtes:
1. Com esbrinar la mida mínima de bloc que llegeix o escriu un
disc dur.


«fdisk -l» em diu això:

Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Així que imagino que la mida mínima/òptima per escriure en aquest
disc és 512 bytes. Ara bé, això no vol dir que la mida òptima per
al sistema operatiu sigui aquesta, ja que abans d'arribar a la
capa física del disc, les dades han de travessar una pila de
capes més.


Aquesta és la mida de sector, que és de 512 bytes per al 90% dels 
mitjans (USB, FDD, HDD, etc.) independentment de quants bytes escrigui 
el capçal en una sola operació. La mida de sector, ni la mida de bloc 
del sistema de fitxers, no està vinculades a les operacions físiques.


No busco la mida òptima per al sistema operatiu, sinó l'òptima per al 
dispositiu físic. És a dir, que si el capçal d'un disc dur escriu com a 
mínim 2048 KiB, aleshores seria molt ineficient establir blocs/chunks de 
512 KiB a la capra RAID, perquè el sistema operatiu podria demanar 
escriure 4 vegades el mateix segment de disc per a emplenar-lo de dades 
independents de 512 KiB cada tros/chunk.


És per això que necessito esbrinar la mida de l'operació de disc; perquè 
el programari ja es pot configurar.




2. Com variar aquesta mida de bloc del RAID amb el
DebianInstaller.


A la documentació no trobo enlloc que es pugui canviar la mida de
bloc (o chunk, com li diu mdadm). He seguit aquest camí:

https://wiki.debian.org/DebianInstaller/Preseed
https://www.debian.org/releases/stable/amd64/apbs04.en.html
https://salsa.debian.org/installer-team/debian-installer/tree/master/doc/devel

A l'exemple de preseed tampoc trobo cap referència als blocs o
els chunks:

https://www.debian.org/releases/bookworm/example-preseed.txt

Així que si vols personalitzar el RAID al teu gust, només se
m'acut l'opció del `preseed/early_command`, que permet executar
el que tu vulguis durant la instal·lació. Però aleshores
necessitaràs passar-li a l'instal·lador les opcions de preseed,
els scripts que necessitis, els paquets udeb addicionals que
calgui, etc.

Normalment només és pràctic si fas una instal·lació remota perquè
se li han de passar una pila de paràmetres al nucli, que en local
els hauràs d'escriure a mà (desconec si es poden llegir d'algun
altre lloc).


Em convé cal provar si el DebianInstaller preveu una instal·lació dins 
un RAID que ja estigui creat abans.

(per exemple, un volum encriptat no és el cas)


Salut,
Alex



Gràcies.

--

Narcis Garcia

__
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should fix this against automated addresses collectors.




Re: (deb-cat) Mida de blocs per a RAID de programari

2023-07-21 Conversa Alex Muntada
Hola, Narcis:

> Em sorgeixen 2 dubtes:
> 1. Com esbrinar la mida mínima de bloc que llegeix o escriu un
> disc dur.

«fdisk -l» em diu això:

Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Així que imagino que la mida mínima/òptima per escriure en aquest
disc és 512 bytes. Ara bé, això no vol dir que la mida òptima per
al sistema operatiu sigui aquesta, ja que abans d'arribar a la
capa física del disc, les dades han de travessar una pila de
capes més.

> 2. Com variar aquesta mida de bloc del RAID amb el
> DebianInstaller.

A la documentació no trobo enlloc que es pugui canviar la mida de
bloc (o chunk, com li diu mdadm). He seguit aquest camí:

https://wiki.debian.org/DebianInstaller/Preseed
https://www.debian.org/releases/stable/amd64/apbs04.en.html
https://salsa.debian.org/installer-team/debian-installer/tree/master/doc/devel

A l'exemple de preseed tampoc trobo cap referència als blocs o
els chunks:

https://www.debian.org/releases/bookworm/example-preseed.txt

Així que si vols personalitzar el RAID al teu gust, només se
m'acut l'opció del `preseed/early_command`, que permet executar
el que tu vulguis durant la instal·lació. Però aleshores
necessitaràs passar-li a l'instal·lador les opcions de preseed,
els scripts que necessitis, els paquets udeb addicionals que
calgui, etc.

Normalment només és pràctic si fas una instal·lació remota perquè
se li han de passar una pila de paràmetres al nucli, que en local
els hauràs d'escriure a mà (desconec si es poden llegir d'algun
altre lloc).

Salut,
Alex

--
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada 
  ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature