LINUX.ORG.RU

Ну, если минимальный выделяемый кусок - это 8 байт, то максимальный гарантированный... 0 байт!

А как ты рассчитываешь процент фрагментации? :)

tailgunner ★★★★★
()

есть 2 вида фрагментации: внутренняя и внешняя. внутренняя фрагментация суть сумма _неиспользуемых_ областей памяти _во_всех_ выделенных кусках памяти. внешняя фрагментация суть сумма всех кусков continious памяти < MIN_ALLOC_SIZE.

asgard
()
Ответ на: комментарий от TaranSergey

>Хммм... что за утилита?
cat /proc/buddyinfo ? :)
PS: сори, протупил с разметкой..

TaranSergey
()

> Что такое фрагментация памяти

это просто научное название состояния сознания с тяжелого бодуна. Когда события предыдущего вечера помнятся несвязными урывками и изобилуют пробелами.

MKuznetsov ★★★★★
()

А че в нынешних университетах курс системного и прикладного ПО уже не проходят, на котором все это рассказываетсяя?

у нас на 2 курсе сейчас как раз идет, правда я в универ почти не хожу =)

wieker ★★
()
Ответ на: комментарий от Svoloch

ну если научно популярно тебя устроит, то так:

используется странично - сегментная адресация. сегменты могут быть произвольного размера,

допустим было 3 сегмента:

сегА 3кб

сегБ 2 кб

сег Ц 4 кб

удалили сегБ 2 кб и загрузили сегД 3 кб

получили

сегА 3 кб

пусто 2 кб

сегЦ4 кб

сегД 3 кб

вот это и сесть фрагментация пмяти, естественно она зависит от используемой модели и процессора-сегментная. страничная, сегментно-страничная и etc

wieker ★★
()
Ответ на: комментарий от wieker

Это не откровение и не сакральные знания. Хотелось бы знать как ее считают, а не что она такое. Что она такое и так знаю.

Svoloch ★★★
() автор топика
Ответ на: комментарий от Svoloch

> Хотелось бы знать как ее считают, а не что она такое

У тебя же есть утилита, которая ее считает - посмотри исходники.

tailgunner ★★★★★
()
Ответ на: комментарий от Svoloch

> Это не откровение и не сакральные знания. Хотелось бы знать как ее считают, а не что она такое. Что она такое и так знаю.

а что там считать то?

--- mm/page_alloc.c ---
/*
 * This walks the freelist for each zone. Whilst this is slow, I'd rather
 * be slow here than slow down the fast path by keeping stats - mjbligh
 */
static int frag_show(struct seq_file *m, void *arg)
{
    pg_data_t *pgdat = (pg_data_t *)arg;
    struct zone *zone;
    struct zone *node_zones = pgdat->node_zones;
    unsigned long flags;
    int order;

    for (zone = node_zones; zone - node_zones < MAX_NR_ZONES; ++zone) {
        if (!zone->present_pages)
            continue;

        spin_lock_irqsave(&zone->lock, flags);
        seq_printf(m, "Node %d, zone %8s ", pgdat->node_id, zone->name);
        for (order = 0; order < MAX_ORDER; ++order) {
            unsigned long nr_bufs = 0;
            struct list_head *elem;

            list_for_each(elem, &(zone->free_area[order].free_list))
                ++nr_bufs;
            seq_printf(m, "%6lu ", nr_bufs);
        }
        spin_unlock_irqrestore(&zone->lock, flags);
        seq_putc(m, '\n');
    }
    return 0;
}
--- mm/page_alloc.c ---

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

--- cut ---

        spin_lock_irqsave(&zone->lock, flags);
        seq_printf(m, "Node %d, zone %8s ", pgdat->node_id, zone->name);
        for (order = 0; order < MAX_ORDER; ++order) {
            unsigned long nr_bufs = 0;
            struct list_head *elem;

            list_for_each(elem, &(zone->free_area[order].free_list))
                ++nr_bufs;
            seq_printf(m, "%6lu ", nr_bufs);
        }
        spin_unlock_irqrestore(&zone->lock, flags);
        seq_putc(m, '\n');
--- cut ---

тут IMHO стоило бы сперва под локом посчитать параметры зоны для
данного порядка а уж потом, уже без лока, писать в файл. бо вещь
сугубо информационная и к точности требований нет, а вот лишний
раз держать лок причем потенциально подолгу - это не есть гуд :-/

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от Svoloch

>Это не откровение и не сакральные знания. Хотелось бы знать как ее считают, а не что она такое. Что она такое и так знаю.

ч0рт, а ч думал я самый умный =)

вот что бывает, когда только заголовок топика читают, а не все сообщение и комментарии к нему, да...

wieker ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.