The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз Linux-ядра 2.6.38, opennews (ok), 15-Мрт-11, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


83. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от Аноним (-), 15-Мрт-11, 23:00 
Можно подробнее и слегка для нуба? :)
Так достаточно мне будет в конфиге заюзать TRANSPARENT_HUGEPAGE_MADVISE ?
Я просто не совсем понял твою вторую строку "а где нужно использовать madvise..."

Спасибо!
Это я, Шурик (TheExplorer).

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

98. "Релиз Linux-ядра 2.6.38"  +1 +/
Сообщение от pavlinux (ok), 16-Мрт-11, 03:06 
> Можно подробнее и слегка для нуба? :)
> Так достаточно мне будет в конфиге заюзать TRANSPARENT_HUGEPAGE_MADVISE ?
> Я просто не совсем понял твою вторую строку "а где нужно использовать
> madvise..."

Вместо malloc() юзать posix_memalign () + madvise ();


/*
* Transparent Huge Pages Test
* (l) 2011 Copyleft by Pavlinux.
*/

#include <stdio.h>
#include <stdlib.h>             /* malloc/free  */
#include <string.h>             /* memset       */
#include <unistd.h>             /* sysconf      */
#include <sys/mman.h>           /* madvise      */
#include <sys/time.h>           /* time funcs   */

int
main (void)
{

  struct timeval before, after;

  void *mem;
  void *posixmem;
  void *hugemem;
  unsigned long long SIZE;
  size_t i;

  size_t page = (size_t) sysconf (_SC_PAGESIZE);

  for (i = 16; i < 21; i++) /* от 128Mb до 2Gb */
    {
      SIZE = (page * 1024 * (2 << i))/page; /* подровняем */
      printf ("\nSIZE: %Lu\n", SIZE);

      gettimeofday (&after, NULL); // старт.
      mem = malloc (SIZE);         // просто malloc
      memset (mem, 0x0a, SIZE);
      memset (mem, 0x05, SIZE);
      memset (mem, 0x0f, SIZE);
      memset (mem, 0xaa, SIZE);
      memset (mem, 0x55, SIZE);
      memset (mem, 0xff, SIZE);
      gettimeofday (&before, NULL); // стоп.

      printf ("malloc--------:  %u.%u\n", before.tv_sec - after.tv_sec,
              before.tv_usec - after.tv_usec); // старт минус стоп.
      free (mem);
/* ---------------------- */
      gettimeofday(&after, NULL);
      posix_memalign((void **)&posixmem, page, SIZE); // к границам страницы
      memset (posixmem, 0x0a, SIZE);
      memset (posixmem, 0x05, SIZE);
      memset (posixmem, 0x0f, SIZE);
      memset (posixmem, 0xaa, SIZE);
      memset (posixmem, 0x55, SIZE);
      memset (posixmem, 0xff, SIZE);
      gettimeofday (&before, NULL);

      printf ("posix---------:  %u.%u\n", before.tv_sec - after.tv_sec,
              before.tv_usec - after.tv_usec);
      free (posixmem);
/* ---------------------- */
      gettimeofday(&after, NULL);
      posix_memalign((void **)&hugemem, page, SIZE);
      madvise (hugemem, SIZE, MADV_HUGEPAGE);        /* нью-фенька */
      memset (hugemem, 0x0a, SIZE);
      memset (hugemem, 0x05, SIZE);
      memset (hugemem, 0x0f, SIZE);
      memset (hugemem, 0xaa, SIZE);
      memset (hugemem, 0x55, SIZE);
      memset (hugemem, 0xff, SIZE);
      gettimeofday (&before, NULL);

      printf ("hugemem       :  %u.%u\n", before.tv_sec - after.tv_sec,
              before.tv_usec - after.tv_usec);
      free (hugemem);
    }
  return 0;
}


Ответить | Правка | Наверх | Cообщить модератору

100. "Релиз Linux-ядра 2.6.38"  +1 +/
Сообщение от Alex_S (??), 16-Мрт-11, 03:15 

  во втором блоке - таки memset ( hugemem, .... );   ??

>       posix_memalign ((void **) &hugemem, page, SIZE);
>       madvise (hugemem, SIZE, MADV_HUGEPAGE);
>       gettimeofday (&after, NULL);
>       memset (mem, 0x0a, SIZE);
>       memset (mem, 0x05, SIZE);
>       memset (mem, 0x0f, SIZE);
>       memset (mem, 0xaa, SIZE);
>       memset (mem, 0x55, SIZE);
>       memset (mem, 0xff, SIZE);
Ответить | Правка | Наверх | Cообщить модератору

101. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от pavlinux (ok), 16-Мрт-11, 03:25 
>   во втором блоке - таки memset ( hugemem, .... );

угу. fixed.


Ответить | Правка | Наверх | Cообщить модератору

114. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от Аноним (-), 16-Мрт-11, 11:24 
Ясно. Совсем ничего не ясно :)) Это патч или это скрипт где-то должен запускаться?
Ответить | Правка | Наверх | Cообщить модератору

120. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от pavlinux (ok), 16-Мрт-11, 13:05 
> Ясно. Совсем ничего не ясно :)) Это патч или это скрипт где-то
> должен запускаться?

int main (void) {...

Это программка на С, просто для проверки работы TRANSPARENT_HUGEPAGE

Ответить | Правка | Наверх | Cообщить модератору

135. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от User294 (ok), 16-Мрт-11, 17:12 
> Ясно. Совсем ничего не ясно :)) Это патч или это скрипт

Не, это просто FAIL. Ваш, кстати. Это ж надо - программу на си не опознать. Что за деградантство?

Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

140. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от Аноним (-), 16-Мрт-11, 18:07 
Просто проходи мимо... Я не программер.
Ответить | Правка | Наверх | Cообщить модератору

160. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от User294 (ok), 17-Мрт-11, 00:08 
> Просто проходи мимо... Я не программер.

Странный человек. Хочет понять особенности работы памяти и что оно даст/что будет плохо на достатотчно низком уровне, не будучи програмером или продвинутым админом, способным понять сие на примере павлиньего кода :). Это примерно как хотеть понять принцип работы микроволновки, будучи неандертальцем.

Ответить | Правка | Наверх | Cообщить модератору

163. "Релиз Linux-ядра 2.6.38"  +/
Сообщение от pavlinux (ok), 17-Мрт-11, 00:27 
> Это примерно как хотеть понять принцип работы микроволновки, будучи неандертальцем.

Чё злой такой, опять не закусывал?! :)


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру