Порядок таблицы преобразования kmalloc_size_indexLinux

Ответить
Anonymous
 Порядок таблицы преобразования kmalloc_size_index

Сообщение Anonymous »

Почему индексы kmem_cache имеют такой порядок?

Код: Выделить всё

  /*
* 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/ .

Подробнее здесь: https://stackoverflow.com/questions/790 ... able-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»