The OpenNET Project / Index page

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



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

Оглавление

Релиз операционной системы NetBSD 8.0, opennews (??), 21-Июл-18, (0) [смотреть все]

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


4. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Аноним (4), 21-Июл-18, 22:12 
Какие есть варианты обработки OOM в NetBSD?
Ответить | Правка | Наверх | Cообщить модератору

5. "Релиз операционной системы NetBSD 8.0"  +1 +/
Сообщение от Аноним (5), 21-Июл-18, 22:32 
Ровно один вариант - malloc ноль возвращает, когда память в системе закончилась ^:)
Ответить | Правка | Наверх | Cообщить модератору

9. "Релиз операционной системы NetBSD 8.0"  –6 +/
Сообщение от Аноним (4), 21-Июл-18, 22:45 
Очень православно, очень по-бздуновски! а почему не завезли оверкоммит?
Ответить | Правка | Наверх | Cообщить модератору

14. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от _ (??), 22-Июл-18, 01:03 
Чтоб не завозить ООМ? :-)
Ответить | Правка | Наверх | Cообщить модератору

16. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Аноним (4), 22-Июл-18, 02:31 
Отсутствие ООМ не предотвращает фризы.
Ответить | Правка | Наверх | Cообщить модератору

29. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Аноним (29), 22-Июл-18, 13:36 
И?
Ответить | Правка | Наверх | Cообщить модератору

20. "Релиз операционной системы NetBSD 8.0"  –3 +/
Сообщение от Аноним (20), 22-Июл-18, 09:28 
с netbsd вы знаете все 3 программы, которые работают в userspace как свои пять пальцев. На этапе разработки хватит и кода ошибки malloc
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

45. "Релиз операционной системы NetBSD 8.0"  +5 +/
Сообщение от Аноним (78), 22-Июл-18, 19:00 
> Очень православно, очень по-бздуновски! а почему не завезли оверкоммит?

То ли дело праволапчатое забивание на ту же проверку результата malloc, как в тех же г(н)омолибах?
Помню, в багтикете ушлые любители костылей и подпорочек аргументировали тем, что из-за овекамита результат всегда будет позитивным (и упадет оно только когда решит действительно задействовать эту память), а значит на проверку можно забить.
Л-Логика!

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

47. "Релиз операционной системы NetBSD 8.0"  +3 +/
Сообщение от qwerty123 (??), 22-Июл-18, 19:25 
>Помню, в багтикете ушлые любители костылей и подпорочек аргументировали тем, что из-за овекамита результат всегда будет позитивным (и упадет оно только когда решит действительно задействовать эту память), а значит на проверку можно забить.

+много.
причем процесс грохается по bus сигналу от ядра, и не делает корректную остановку и/или обработку ситуации.
например berkeley db после такого через одну можно удалять, ибо невосстановимо.
и так далее.

"повбивав бы"

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

61. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Поттеринг (?), 22-Июл-18, 22:26 
> а значит на проверку можно забить.

Линукс ваш новый стандарт, а не какой-то там замшелый posix!

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

22. "Релиз операционной системы NetBSD 8.0"  +1 +/
Сообщение от Q2Wemail (?), 22-Июл-18, 11:09 
Вот бы в линуксе так.
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

62. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Поттеринг (?), 22-Июл-18, 22:35 
если что - в линуксе ТАК было - примерно во времена libc4, традиционная реализация malloc через sbrk.
Но в какой-то момент все же было замечено, что это немножк неэффективно на железе новее 80го года выпуска, где памяти не "128K слов". (если что, free и, вероятно, прочие bsd долго и с мучениями копировали эту затею. По дороге поломав к чертям setrlimit - чинили лет десять, по-моему, еще и не дочинили. Линуксный, понятно, никто и не чинил, works as intended)
overcommit пришел чуть позже, когда оказалось, что по другому просто не получается - из-за чудесатого buffer cache и особенностей proactive свопа, никто на самом деле никогда и не знает, сколько у системы доступно памяти (тем более - сколько будет в момент, когда память все же понадобится).
Эту какашку *bsd копировать не стали, попутно поимев некоторый геморрой с портированием выращенных в линуксе якобы-переносимых конструкций (посмотрите на ужас ужасный по имени devel/libublio в портах)

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

65. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от qwerty123 (??), 23-Июл-18, 00:00 
>если что - в линуксе ТАК было - примерно во времена libc4, традиционная реализация malloc через sbrk.
>Но в какой-то момент все же было замечено, что это немножк неэффективно на железе новее 80го года выпуска, где памяти не "128K слов". (если что, free и, вероятно, прочие bsd долго и с мучениями копировали эту затею.

Занятно написано, но хрень полная и безграмотная.

NetBSD UVM, 1998
http://chuck.cranor.org/p/diss.pdf

FreeBSD 1.1.5, 1994 man 3 brk
https://www.freebsd.org/cgi/man.cgi?query=brk&apropos=0&sekt...
--
NAME
     brk, sbrk -- change data segment size
DESCRIPTION
     The brk and sbrk functions    are historical curiosities left    over from ear-
     lier days before the advent of virtual memory management.    

FreeBSD malloc (3) revisited, Poul-Henning Kamp, 1998
http://phk.freebsd.dk/pubs/malloc.pdf
Там есть ссылки на публикации


Где и в каком состоянии был Linux kernel вместе с malloc(9) в то время, могу подсказать.

Например, многопоточность в glibc malloc (ptmalloc2) была реализована только в 2006, то есть лет на 8 позже NetBSD/FreeBSD

https://sploitfun.wordpress.com/2015/02/10/understanding-gli.../

History: ptmalloc2 was forked from dlmalloc. After fork, threading support was added to it and got released in 2006. After its official release, ptmalloc2 got integrated into glibc source code. Once its integration, code changes were made directly to glibc malloc source code itself. Hence there could be lot of changes between ptmalloc2 and glibc’s malloc implementation.


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

70. "Релиз операционной системы NetBSD 8.0"  +1 +/
Сообщение от пох (?), 23-Июл-18, 06:59 
> где и в каком состоянии был Linux kernel вместе с malloc(9) в то время, могу подсказать.

да там же и был, идея mmap'ать /dev/zero посетила всех, видимо, примерно из общего источника.

98й - это уже давно libc5, с mmap и sigsegv'ами (и с неработающим rlimit)

И да, расскажите-ка, в каком году у вас его починили?

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

74. "Релиз операционной системы NetBSD 8.0"  –2 +/
Сообщение от qwerty123 (??), 23-Июл-18, 12:05 
>И да, расскажите-ка, в каком году у вас его починили?

Ты общаешься с группой лиц? =)
Тогда группа лиц тебе эксклюзивно советует: Google can help you

Ей лениво писать тому кто упоpото не намерен читать тексты по ссылкам.

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

76. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от нах (?), 23-Июл-18, 13:41 
в тексте по ссылкам нет ни слова о поломанном setrlimit. Если ты ничего не понял - примени к себе свой собственный совет, или не строй из себя эксперта.

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

80. "Релиз операционной системы NetBSD 8.0"  –2 +/
Сообщение от qwerty123 (??), 23-Июл-18, 16:13 
>в тексте по ссылкам нет ни слова о поломанном setrlimit.

Правильно, потому что никто не "ломал". Шла разработка.

Только у пафосных скаутов кто-то что-то ломает, бросает, делиться-не делиться, и прочее.

Ты что-то вычитал, и

>или не строй из себя эксперта.

строишь из себя пафосного "эксперта", "слоника-в-домене"

На деле несешь сущий бред.

>группа лиц тебе эксклюзивно советует: Google can help you

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

19. "Релиз операционной системы NetBSD 8.0"  +5 +/
Сообщение от Аноним (19), 22-Июл-18, 09:22 
В отличие от линуксового «у нас ООМ, надо срочно у кого-нибудь отнять память, чтобы продолжить работать», BSD просто реагируют на ситуацию по POSIX-стандарту (а точнее по C), возвращая нулевой указатель и как вариант кидая системный сигнал, при этом обработка ООМ проще, потому что система заранее имеет свой объём личной памяти, который используется для работы и которым она делиться не будет; т.е. чтобы не было аппаратного ООМ, достаточно просто по старинке не отдавать всю память.
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

53. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Аноним (4), 22-Июл-18, 20:55 
>как вариант кидая системный сигнал

Какой именно?

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

57. "Релиз операционной системы NetBSD 8.0"  +1 +/
Сообщение от Аноним (57), 22-Июл-18, 21:46 
Так раньше было, сейчас в нетке для этого используется UVM.
http://netbsd.net/docs/kernel/uvm.html
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

64. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от пох (?), 22-Июл-18, 23:11 
> Так раньше было, сейчас в нетке для этого используется UVM.

там нет overcommit, в смысле линукса - то есть oom killer не нужен.
Но есть ньюанс, да - в результате sigsegv прилетает тогда, когда в линуксе программа спокойно бы отработала. Причем необязательно он прилетит самому прожорливому - он прилетит тому, кто сожрал "интеллигентский кусок". null же вернется только если попросить памяти заведомо больше, чем ее в принципе могло бы быть при полном отсутствии других процессов.


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

75. "Релиз операционной системы NetBSD 8.0"  –3 +/
Сообщение от qwerty123 (??), 23-Июл-18, 12:18 
>Но есть ньюанс, да - в результате sigsegv прилетает тогда, когда в линуксе программа спокойно бы отработала.

Че? "спокойно бы отработала"? Мальчик, ты откуда?

Ты гарантируешь что финансовые данные при это будут достоверными, а менеджер баз данных не грохнется и не превратит данные о твоей зарплате в дерьмо?

Результат malloc(3) надо проверять. И вписывать обработку ситуации malloc() == 0
А то ужк выросли чудаки, которые не напрягают свой ценный мозг на наличие ресурсов в системе.

А по некоторым стандартам во встраиваемых системах malloc() вообше не используют. Ни явно, ни опосредовано. Ибо нехрен.

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

77. "Релиз операционной системы NetBSD 8.0"  –2 +/
Сообщение от нах (?), 23-Июл-18, 13:56 
еще один "немальчик", не в теме совсем, но лезущий со своим ценным мнением?

> Результат malloc(3) надо проверять.

хоть обпроверяйся - там в современных системах (и, оказывается, даже netbsd - современная) - никогда не будет 0.
А памяти при этом может и не оказаться, вот сюрприз-то, да?

данные будут достоверными - пока будут вообще. А потом прилетит sigbus или sigsegv - в принципе, можешь даже попытаться их обработать, и корректно завершиться (других вариантов нет). Если твой "менеджер таз банных" при этом просто грохается - ну поздравляю, пора менять софт 80х годов.

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

79. "Релиз операционной системы NetBSD 8.0"  +1 +/
Сообщение от Аноним (78), 23-Июл-18, 15:15 
>> Результат malloc(3) надо проверять.
> хоть обпроверяйся - там в современных системах (и, оказывается, даже netbsd -
> современная) - никогда не будет 0.
> А памяти при этом может и не оказаться, вот сюрприз-то, да?

* * *
Эх любо, братцы анонимы, любо,
Любо, братцы, анонимом быть,
Пускать ветры прям в лужу,
О всяки пруфах не тужить!
* * *

# rctl -h
user:restricted:vmemoryuse:deny=1024M/process
user:restricted:memoryuse:deny=512M/process
user:restricted:swapuse:deny=1024M

% uname -rs;whoami && cat test.c && ./test|tail
FreeBSD 11.2-STABLE
restricted
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>

#define MB (1024*1024)
#define PSIZE 4096
int main(void){
    size_t sum = 0;
    char *ptr;
    for (size_t i=0;;i++) {
        if ((ptr = malloc(MB)) == NULL) {
            perror("Err:");
            exit(EXIT_FAILURE);
        }
        for (size_t j = 0;j < (MB-PSIZE-1); j += PSIZE) ptr[j] = 0;
        sum += MB;
        printf("allocated: %zu MB\n", sum/MB);
    }
    return EXIT_SUCCESS;
}Err:: Cannot allocate memory
allocated: 497 MB
allocated: 498 MB
allocated: 499 MB
allocated: 500 MB
allocated: 501 MB
allocated: 502 MB
allocated: 503 MB
allocated: 504 MB
allocated: 505 MB
allocated: 506 MB


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

82. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от нах (?), 23-Июл-18, 17:35 
> О всяки пруфах не тужить!

и главное - нихрена не понимать, о чем был разговор.

тогда в качестве "пруфа" сойдет любой бред.

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

84. "Релиз операционной системы NetBSD 8.0"  –1 +/
Сообщение от Аноним (78), 23-Июл-18, 17:52 
>> О всяки пруфах не тужить!
> и главное - нихрена не понимать, о чем был разговор.
> тогда в качестве "пруфа" сойдет любой бред.

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

Звиняйте, но с тем же пафосом и апломбом кое-кто совсем недавно рассказывал о преимуществах null-terminated строк и об эффективности работы с ним современных (и не очень) процессоров.
https://www.opennet.ru/openforum/vsluhforumID3/114847.html#88
Так что в недопонимание сказанного вами по причине непризнанной гениальности вас - верится мало.
А вот в "особое видение художника" пополам с "не знал, а потом и забыл" – вполне.

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

81. "Релиз операционной системы NetBSD 8.0"  –1 +/
Сообщение от qwerty123 (??), 23-Июл-18, 16:34 
>данные будут достоверными - пока будут вообще.

Бля... ладно, разжую.

#define A_SIZE 1024
uint *dst;

if ((dst = malloc(A_SIZE) > 0) {
  bcopy(src, dst, A_SIZE);
} else {
  /* handler */
}


Если malloc() всегда не ноль, но памяти так и не выделено, то где херакнется алгоритм?

Или как вызвать прерывание в хост систему из гостевой по случаю спекулятивного malloc(), "слушай, дорогой, ты меня поспи совсэм, пока память в натуре не появиться"?

И где у разработчика есть шанс построить более надежный алгоритм?

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

83. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от нах (?), 23-Июл-18, 17:38 
> Бля... ладно, разжую.

зачем ты мне это разжевываешь? Разжевывай разработчикам всех операционных систем середины 90х, они ж тyпые, они ж не знали этой великой тайны.

> И где у разработчика есть шанс построить более надежный алгоритм?

там где он знает, как устроена система и подстелил соломки. man 2 signal ?

ну да, не очень красивый получается код, но, вообще-то, если честно - память в современных системах кончается совсем не потому, что ее забили с помощью bcopy ;-)
И чаше всего проблема даже вовсе не в том, что ее на самом деле не хватило.

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

96. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от qwerty123 (??), 24-Июл-18, 20:21 
>зачем ты мне это разжевываешь?

что показать твою великую компетентность

>если честно

а если соврать как обычно?

>память в современных системах кончается совсем не потому, что ее забили с помощью bcopy

а как? магией?

# size  /bin/sh
    text   data    bss      dec       hex   filename
  153647   1748   9560   164955   0x2845b   /bin/sh

выясни что такое bss, data, heap, stack, как они используются
в вычислительной машине, в частно при вызове функций
и больше не ипи моск =)


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

100. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от нах (?), 27-Июл-18, 13:03 
> что показать твою великую компетентность

пока что ты показываешь только свою великую некомпетентность.

>>память в современных системах кончается совсем не потому, что ее забили с помощью bcopy
> а как? магией?

да, малыш, для тебя это магия.

пока ты дpoчишь на свои "великие знания" на уровне устаревших на двадцать лет букварей, реальное устройство памяти в современных системах прошло мимо тебя.

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

101. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от Michael Shigorinemail (ok), 01-Авг-18, 20:51 
> реальное устройство памяти в современных системах

А можно кратко или ссылку?  Я-то тоже ещё по Мюллеру да современникам читал, даже не по профессору.

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

104. "Релиз операционной системы NetBSD 8.0"  +/
Сообщение от анон (?), 06-Сен-18, 10:03 
удали интернет себе
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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