[SOS] article 5: ajout

Thomas Petazzoni thomas.petazzoni at enix.org
Mar 27 Sep 21:13:44 CEST 2005


Salut !

anthoine.bourgeois a écrit :

> J'ai ajouter les fonctionnalités proposées dans l'entete kmem_slab.h, a savoir:

Merci beaucoup pour ce patch. Je l'ai parcouru (trop) rapidement, mais
il me semble clair et lisible. Quelques questions néanmoins:

> - les constructeurs et destructeurs

Lorsque j'avais implémenté le premier allocateur par slab de KOS,
j'avais étudié le papier de Bonwick, et son histoire de
constructeur/destructeur. Sur le papier, ça m'avait paru séduisant, mais
quand je voyais en pratique comment on utilisait les slabs dans KOS,
j'avais l'impression qu'on ne pourrait finalement pas mettre grand chose
dans ces ctor/dtor, à part un memset() à zéro et quelques
initialisations de champs.

Par curiosité, est-ce que dans le cas de SOS, tu as trouvé des cas où
l'utilisation de constructeurs/destructeurs était vraiment intéressante?

J'ai l'impression qu'on gagne finalement assez peu avec ces
constructeurs/destructeurs, mais que ça mange pas mal de mémoire en plus
et complexifie un peu le code, à cause du maintien des free_list en
dehors des slabs.

Quel est ton avis sur la question ?

> J'ai constaté une amélioration de la rapidité du calcul de 1000! de 24%
> principalement grace au cache coloring.

Excellent! Tu as fait tes mesures sur machine réelle ?

> +    { "kmalloc 8B objects",     8    },
> +    { "kmalloc 12B objects",    12   },
> +    { "kmalloc 16B objects",    16   },
> +    { "kmalloc 20B objects",    20   },
> +    { "kmalloc 24B objects",    24   },
> +    { "kmalloc 28B objects",    28   },
> +    { "kmalloc 32B objects",    32   },
> +    { "kmalloc 40B objects",    40   },
> +    { "kmalloc 46B objects",    46   },
> +    { "kmalloc 52B objects",    52   },
> +    { "kmalloc 64B objects",    64   },
> +    { "kmalloc 80B objects",    80   },
> +    { "kmalloc 96B objects",    96   },
> +    { "kmalloc 112B objects",   112  },
> +    { "kmalloc 128B objects",   128  },
> +    { "kmalloc 160B objects",   160  },
> +    { "kmalloc 200B objects",   200  },
> +    { "kmalloc 256B objects",   256  },
> +    { "kmalloc 340B objects",   340  },
> +    { "kmalloc 426B objects",   426  },
> +    { "kmalloc 512B objects",   512  },
> +    { "kmalloc 768B objects",   768  },
> +    { "kmalloc 1024B objects",  1024 },
> +    { "kmalloc 1536B objects",  1536 },
> +    { "kmalloc 2048B objects",  2048 },
> +    { "kmalloc 3072B objects",  3072 },
> +    { "kmalloc 4096B objects",  4096 },
> +    { "kmalloc 6144B objects",  6144 },
> +    { "kmalloc 8192B objects",  8192 },
> +    { "kmalloc 9728B objects",  9728 },

Ici, il y a une raison particulière qui te fait définir des slabs pour
des objets de toutes ces tailles ?

> +  /* Compute number of pages per slab */
> +  *pages_per_slab = ((8 * *alloc_obj_size) / SOS_PAGE_SIZE) + 1;

Ici, le '8' en dur, c'est le nombre d'objets minimum que tu veux avoir
dans chaque slab ?

Voilà pour mes maigres remarques.

Encore bravo et bonne soirée !

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org
http://{thomas,sos,kos}.enix.org - Jabber: thomas.petazzoni at jabber.dk
http://{agenda,livret}dulibre.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://the-doors.enix.org/pipermail/sos/attachments/20050927/d7959be8/signature.pgp


Plus d'informations sur la liste de diffusion Sos