/*
* Conversion table for small slabs sizes / 8 to the index in the
* kmalloc array. This is necessary for slabs < 192 since we have non power
* of two cache sizes there. The size of larger slabs can be determined using
* fls.
*/
u8 kmalloc_size_index[24] __ro_after_init = {
3, /* 8 */
4, /* 16 */
5, /* 24 */
5, /* 32 */
6, /* 40 */
6, /* 48 */
6, /* 56 */
6, /* 64 */
1, /* 72 */
1, /* 80 */
1, /* 88 */
1, /* 96 */
7, /* 104 */
7, /* 112 */
7, /* 120 */
7, /* 128 */
2, /* 136 */
2, /* 144 */
2, /* 152 */
2, /* 160 */
2, /* 168 */
2, /* 176 */
2, /* 184 */
2 /* 192 */
};
Почему бы не использовать более человеческий ожидаемый порядок индексов? Я имею в виду, почему значения в индексе не являются последовательными в [1, 7]? Например. почему индекс размеров в [8, 16) байтах равен 3, а не 1?
Исходный коммит 9e5e8deca746 не дает такой информации.
Ложное разделение здесь, похоже, не имеет значения. Кроме того, исходный коммит не помогает объяснить, почему был выбран такой порядок элементов. В LKML это тоже не обсуждается: https://lore.kernel.org/lkml/2007061809 ... 8@sgi.com/ .
Почему индексы kmem_cache имеют такой порядок? [code] /* * Conversion table for small slabs sizes / 8 to the index in the * kmalloc array. This is necessary for slabs < 192 since we have non power * of two cache sizes there. The size of larger slabs can be determined using * fls. */ u8 kmalloc_size_index[24] __ro_after_init = { 3, /* 8 */ 4, /* 16 */ 5, /* 24 */ 5, /* 32 */ 6, /* 40 */ 6, /* 48 */ 6, /* 56 */ 6, /* 64 */ 1, /* 72 */ 1, /* 80 */ 1, /* 88 */ 1, /* 96 */ 7, /* 104 */ 7, /* 112 */ 7, /* 120 */ 7, /* 128 */ 2, /* 136 */ 2, /* 144 */ 2, /* 152 */ 2, /* 160 */ 2, /* 168 */ 2, /* 176 */ 2, /* 184 */ 2 /* 192 */ }; [/code] Почему бы не использовать более человеческий ожидаемый порядок индексов? Я имею в виду, почему значения в индексе не являются последовательными в [1, 7]? Например. почему индекс размеров в [8, 16) байтах равен 3, а не 1? Исходный коммит 9e5e8deca746 не дает такой информации. Ложное разделение здесь, похоже, не имеет значения. Кроме того, исходный коммит не помогает объяснить, почему был выбран такой порядок элементов. В LKML это тоже не обсуждается: https://lore.kernel.org/lkml/20070618095915.826976488@sgi.com/ .