LINUX.ORG.RU
решено ФорумTalks

Обсудите идею такого аллокатора. C/С++

 


0

2

http://telegra.ph/Ideya-allokatora-01-15

Обсудите пожалуйста.

P.S. Похоже идея не взлетела: чтобы она работала, надо как-то подправлять offset-ы на перемещённые куски, а реализация этого обернётся полной жопою, съедающей все выгоды. Да и косвенный доступ снижает производительность. Автор тупой упырь и не читал литературу по аллокаторам, например http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf

Сформулирую задачу.

Есть множество объектов, каждый из которых выделяет себе в пределе до 16 строк произвольной длины. Объекты делают это в разное время. Условно говоря, объект - это коннект до юзера и строка выделяется когда юзер пишет месагу в чатик. Когда накапливается условно 16 строк, объект их освобождает разом.

Вот ищется максимально производительный аллокатор под такое.

Можно забацать килобайт памяти каждому объекту - мол, выделяй там сколько хочешь и как хочешь - тоже решение, но коннектов очень много и жалеко не каждый из них что-то в этом килобайте будет держать.

Для Ъ (пост из тынца выше)

Обсудите такую идею аллокатора. Юзкейс - выделять объекты размером не более, допустим, 4КБ и иметь минимум оверхеда на служебные структуры. Применять в in-memory nosql хранилке ключей key=value.

Выделяем объекты любого размера (до 4kb) последовательно в странице (как арена аллокатор) (макс размер объекта = не более страницы), при заполнении страницы берём у ОС новую и продолжаем. При освобождении объекта, помечаем его в странице как свободный, но выделение в этой точке невозможно - выделялка максимально тупая и берёт всегда только с конца «текущей».

В процессе освобождения очередного элемента проверяем страницу Q (в которой он только что был освобождён) на суммарное количество свободных фрагментов sum_free. Если sum_free достигает некого критического уровня (скажем, 0.4 от общего размера страницы) - делаем compaction - вытряхиваем все несвободные фрагменты из страницы Q в новую чистую страницу (линейное время), подменяем новой страницей страницу Q, убиваем страницу Q. Помещаем нашу новую страницу в множество страниц где снова можно выделять память с конца (при этом её конец будет уже не в начале, т.к. какое-то кол-во памяти там уже сожрано).

Чтобы работала подмена страниц, юзеры такого аллокатора ссылаются на свои данные не просто указателем, а парой (page_idx, offset), где page_idx - индекс страницы в таблице страниц. То есть, подмена страниц будет делаться заменой указателя в нужном индексе этой таблицы. page_idx и offset могут быть размера 32 bit и 16 bit (если страница на неск. КБ), что суммарно будет не жирнее pointer. Для доступа к своему куску: data_ptr = table[page_idx] + offset. Доступ юзеру к началу страницы нужен, чтобы освобождающий поток мог делать работу с заголовком страницы по увеличению счётчика sum_free.

Перемещено tailgunner из development



Последнее исправление: hlamotron (всего исправлений: 5)

время писать аллокатор для c++
сам собой аллокатор не напишется
я живу активной и полноценной жизнью, а потом пишу аллокатор
ошибка SEGFAULT - я знаю как это решить, надо написать ещё один аллокатор!

TERRANZ ★★★★
()
Последнее исправление: TERRANZ (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Ссылочку на сообщение, пожалуйста. Это в текущей теме было?

Это было всегда, да и даже тут - читай выше. Про свои проекты он вещал в предыдущей теме. Да и это неважно. Раз он обвинил меня в чём-то, то из этого явно следует то, что у него это есть, вернее он считает, что есть. Ему даже приводить примеры не надо.

Примеры ты видишь тут, а более подробно посмотри в предыдущей - там он помножил на ноль вообще любую теоретическую деятельность, определил наличие какого-то кода за критерий состоятельности. Там было и про «запуск проектов» и прочее.

Ты только об этом и говоришь. Вот даже сейчас.

Я не говорю - это ответ. Я имею полное право на ответ.

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

Подробнее я это расписал выше. Пока ты не начинаешь наглеть - ты живёшь в своём мире, при этом у каждого он свой. Кто-то изучает сишку за пол года, а кто-то за 50. И это не значит, что первый потратил на это столько же усилий - второй мог потратить в сотню раз больше.

Но, и это самое важно но. Как только ты начинаешь сравнивать, как только ты начинаешь выставлять свои достижения на публику - тут же кончается твой субъективный мирок и начинается объективный. И в объективном 50лет - это мусор, и пусть тебе будет хоть трижды обидно - ты это начал.

Я не понимаю вообще - зачем что-то болтать о своих достижениях - они ничего не значат. Значит лишь то, что ты можешь сделать/сказать здесь и сейчас. 95% людей ваншотмены, т.е. если они что-то и родят объективно сильное - это будет их единственное достижение. Точно так же и с областями.

Ссылочку на сообщение пожалуйста.

Всё выпилено, либо загажено - мне лень искать, а скажи спасибо за это твоим собратьям.

Ты точно говорил мне о том, что у меня нет проектом. Такую задвигал историю о «проекты это проекты, а трюки - это трюки», имя ввиду свои проекты, которые я так же называл хелвордами ненужными, а тебя полыхало с этого седалище.

Вот, я же говорю, что нездоровая. Как это по-другому назвать? Ты предложил поставить принципиально не расходуемое. Это же глупо.

Понимаешь в чём штука, так было ещё про выпил с форума. Т.е. ты терял звёзды через это, а я их получал чисто формально. Здесь никаких ошибок нет.

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

Понимаешь, это абсолютно неважно.

Важно то, что ты трепло. Что в последних двух темах было достоверно доказано. Все, что ты можешь — это потоки несуразного говна на LOR-е.

Кроме того, ты не можешь в логику и здравый смысл:

Это он пытается принизить мои достижения, выдав свои за правильные, а мои за не правильные.

Невозможно принизить то, чего нет и никогда не будет.

eao197 ★★★★★
()
Ответ на: комментарий от i-rinat

Тут нет ни модели, ни тезисов. Какие-то невнятные блуждания, к тому же ещё и вперемешку с руганью. Нормальным языком оформить можешь?

Тут нет ничего, кроме трёпа. Покажи мне ругань, невнятные блуждания и критерии нормальности, а так же найти «не нормальное» у меня. Ничего этого ты не сделаешься, а если попытаешься - результат ты знаешь.

Пф. Twitter сделал это уже несколько лет назад.

Неверно, никто этого не сделал, да и даже если сделал - из этого ничего не следует. Нигде обратное не утверждалось, да и вообще разговор был не об этом.

С тех пор они уже успели несколько раз попрыгать туда-обратно. Какое-то время у них была динамическая система. Сейчас, кажется, они рендерят документ на сервере, не вникал уже в детали.

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

Понимаешь? Ты слова перекладываешь туда-сюда, а эту идею уже реализовали и выбросили. Причём несколько раз.

Ты просто некомпетентный балабол. Мало того, что ты говоришь не о моей модели, дак ещё и обделался в том, о чём говоришь.

Клиент-сайд рендеринг, ванпейдж - это топ тренд веба уже много лет. Выкинули иное, а не выкинули полностью лишь по причине интеграции с миром говна, о чём я уже говорил.

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

Но т.к. контекст был «вне рынка», то вне рынка пользователи, у которых осёл - никому нахрен не нужны, как и те, которые не могут обновить броузер. Поэтому этой проблемы нет, как и нет проблем с тормазами, а значит ничего против данного подхода нет.

Ну и самое интересное то, что ты будучи ламерков даже не осилил понять о чём я. Я говорил именно о транспорте, а не о рендеринге. В моей схеме ничего не мешает что-то рендерить на сервере. Но ты слишком лсен, что-бы это понять.

В конечном итоге - что мы видим? Очередной нулёвый эксперт, который нихрена не понимает в теме, нихрена не понял того, о чём ему говорят и продолжает усиленно что-то вещать.

Факт твоей правоты никому не интересен.

Меня не волнует то, что тебе неинтересно. Ты попытался оспорить мои тезисы, при этом неудачно. Надо было тебе продолжать играть в идиота, авось кто-то бы поверил в том, что ты реально что-то понимаешь. Но ты опять улетел в лужу в тот момент, когда зикнулся о чём-то конкретном.

Если это основная твоя идея, то она не стоит внимания, потому что не приносит пользы.

Меня не волнует твоя оценка моих идей. Меня волнует то, что раз ты начал что-то вещать против - обосную свои претензии, либо слейся.

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

Всё выпилено, либо загажено - мне лень искать, а скажи спасибо за это ...

Тебе. Это же ты всё загадил. Поэтому и удаляют.

Ты ещё не понял? Вот забегает к тебе домой случайная кошка с улицы, и гадит на пол. Ты убирать не будешь? Так и оставишь? Вот ты — эта гадящая кошка.

Это было всегда, да и даже тут - читай выше.

Опять отнекиваешься. Ожидаемо.

Ты точно говорил мне о том, что у меня нет проектом.

Говорил.

имя ввиду свои проекты

Нет. Не выдумывай то, чего нет. Я предлагал тебе начать свои, а не зацикливаться на чужих. Но ты всё ещё не делаешь свои, а зацикливаешься на чужих.

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

Только в твоём воображении. Сидишь там у себя и фантазируешь, как лихо всех уткнул. Попробуй делать своё. Быстро поймёшь, что эта мифическая «нужность» не имеет значения. (Хотя ты ведь не начнёшь делать своё. Кого я обманываю.)

Я не понимаю вообще - зачем что-то болтать о своих достижениях

О своих достижениях я раза два на форуме писал в явном виде. И в обоих случаях рядом с этим сообщением ещё написано другое, о том, что я зря разговор в эту тему повернул.

Конкретно у тебя — бугурт. Даже если я ничего не говорю, тебе всё равно кажется, что я хвастаюсь. Потому что у тебя подгорает.

а скажи спасибо за это твоим собратьям

Я смотрю, без оскорблений ты даже дышать не можешь. Помню, как в средней школе (и среди уличных «пацанов») была распространена такая манера общения — попытки оскорбить, явные и завуалированные.

Понимаешь в чём штука, так было ещё про выпил с форума. Т.е. ты терял звёзды через это, а я их получал чисто формально. Здесь никаких ошибок нет.

Глупо. Повзрослей уже.

i-rinat ★★★★★
()
Ответ на: комментарий от vcerloman

Неверно, никто этого не сделал, да и даже если сделал - из этого ничего не следует. Нигде обратное не утверждалось, да и вообще разговор был не об этом.

Это шедеврально!

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

Покажи мне ругань

Слово «дерьмо» в различных вариациях, например.

критерии нормальности

Хотя бы без ругани, и связно.

Неверно, никто этого не сделал

То, что ты написал, они покрыли. Так что ты тут в лужу сел. Если это не то, что ты имел в виду, проблема только в том, что ты не можешь внятно изъясняться.

даже не осилил понять о чём я

А тебя никто не понимает. Рефлексировать не пробовал?

Ты попытался оспорить мои тезисы, при этом неудачно.

Тезисов озвучено не было. Я пытался толковать то невнятное, что ты написал. Видимо, не очень удачно.

Не можешь общаться на общепринятом в обществе языке — не лезь в это общество. Оно не для тебя. (Но ты почему-то всё лезешь и лезешь. Который это по счёту аккаунт уже?)

i-rinat ★★★★★
()
Ответ на: комментарий от eao197

Важно то, что ты трепло.

В чём и почему?

Что в последних двух темах было достоверно доказано.

В последних темах видно только то, что ты обделался во всём. Ты не смог обосновать свои претензии, ты не смог доказать свою состоятельность как цензора. Состоятельность вообще как того, кто может говорить на тему кода, языка, либо ещё чего-то.

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

Все, что ты можешь — это потоки несуразного говна на LOR-е.

Самое интересное, что ты, клоун, нигде и никогда не показал и не покажешь, что именно там несуразное и почему. Что именно там говно и почему.

Кроме того, ты не можешь в логику и здравый смысл:

Самое то, что я данного клоуна на нарушениях в логике ловил множество раз, а данный клоун ни разу. Ни разу это трепло ничгео не показало, ничего не обосновало. Оно только трепалось и треплаось.

И самое интересное то, что оно опять обделалось, ведь эта потуга не отменяет ничего. Твои оценки меня, твои потуги в моё адрес не отменяют необходимость ответа. Тезисы существуют отдельно от личности, любой текст не апеллирующий к ней - существует отдельно .

Это аксиома. Нельзя что-то опровергнуть/подтвердить таким образом.

Невозможно принизить то, чего нет и никогда не будет.

Можно. Критерия «нет» нет, свидетельство за то, что достижениями является только то, что соответствует этим критериям - нет, да и быть не может.

Я даже не представляю, как вы существуете в мире с таким уровнем развития. Я бы вышел в окно, либо попытался это исправить. Ведь это не просто тупость - это явные проблемы с развитием.

vcerloman
()
Ответ на: комментарий от i-rinat

Слово «дерьмо» в различных вариациях, например.

И?

Хотя бы без ругани, и связно.

Опять же, ты уже обосрался с одном, но спрошу ещё раз - где именно «не связно» и почему. Ты же не трепло?

То, что ты написал, они покрыли.

Пруфы.

Так что ты тут в лужу сел.

С чего это?

Если это не то, что ты имел в виду, проблема только в том, что ты не можешь внятно изъясняться.

Заметим, как этот клоун тут же слился и проигнорировал весь своё трёп о клиент-сайд рендеринге, а том что сдохло. И в этом все клоуны. Он начала нести ахинею, обделался и сделал вид, что этого не было.

Сейчас этот клоун начал вещать о том, что я где-то обделался, при этом и почему - клоун никогда не скажет.

А тебя никто не понимает. Рефлексировать не пробовал?

Понимаешь. Ты бездарный нонейм с помойки. Он бездарный нонейм с помойки. Ты никто и он никто. С чего вдруг, вы решили, что непонимание с вашей стороны - это не ваша проблема?

И да, клоун, ты не забывай то, с кем ты говоришь и что из этого следует. Если ты думаешь, что я твой убогий юлёж не помножу на ноль - ты ошибаешься.

А делается это очень просто, показываю пацанам. Берётся цитата:

У меня спокойно работает вебчик на вебсервере, который умеет отдать один файл - реализует 1% хттп, т.к. больше ему не надо. И не надо НИКОМУ, и это объективно. Этот файл - это бутстрап на жабадерьме, который поднимает ws и всё - далее мы имеем нормальный(относительно, т.к. ws дерьмо) и полное управление обозревателем.

Что мы тут видим? Мы видим хттп, вебсервер и то, что это заменяет. Вниманием вопрос - мы тут видим какие-то упоминания о рендеринге? Мы видим упоминания о транспорте от этого клоуна? Нет. Ничего мы не видим.

А почему? Потому что это некомпетентное, малоразвитой трепло. Которое попросту не способно читать, понимать и внятно отвечать. Она начало нести про сервер/клиент-сайд рендеринг, любой из которых укладывается в эту схему. Он т.к. он не может этого понять - он пытается своей парой извилиной найти знакомые ключевые слова.

Ба, он увидел жс, а далее написал базвордов на тему жс. Почему? Трепло некомпетентное.

А жс там нужен как минимум для эмуляции навигации, которая завязана на хттп по дефолту.

Тезисов озвучено не было. Я пытался толковать то невнятное, что ты написал. Видимо, не очень удачно.

Вот заметим, как это трепло юлит. Ведь его попросили дать обоснования для подобных определения, а именно «невнятное». Дал ли он их? Нет. Трепло их проигнорило.

Не можешь общаться на общепринятом в обществе языке — не лезь в это общество. Оно не для тебя. (Но ты почему-то всё лезешь и лезешь. Который это по счёту аккаунт уже?)

Не волнуйся, я лезу не к тебе. Ты не часть, а отрыжка общества. Ты в нём никто и звать тебя никак, поэтому ассоциировать себя с ним тебе никто права не давал.

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

Такой вот извращенный и аморальный способ развлечения.

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

Я смотрю, что ты становишься всё отчаяннее. Концентрация личных оскорблений в сообщениях растёт и растёт. По делу сказать нечего? Всё пишешь, что все тебя понимают неправильно, без попыток объяснить, что же конкретно ты имеешь в виду.

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

Нет, я становлюсь всё нетерпеливее к твоей тупости, вранью и жалким потугам игнорировать реальность. Я задам тебе простой вопрос - почему ты проигнорировал своё обсёр с клиент-сайд рендерингом?

А по поводу этой потуги - тут мы видим типичный слив. Балаболу чётко и явно показали то, что

1) он обделался с «я не понимаю», ему показали мою цитату в которой ни слова не было про «рендеринг», а так же то, что в потугах балабола ни слова не было о транспорте, хотя как минимум ключевые слова там были.

2) он не дал пруфов( на тему твиттер сделал и на то, почему из того, что он сделал следует то, что я в чём-то там обделался).

3) ему указали на игнорирования того факта, что балабол трепался о клиент-сайд рендеринге. Он утверждал, что он сдох, хотя на самом деле всё наоборот. Последовал ли на это ответ от данного балабола? Нет.

И в этом вся суть подобных балаболов. Есть чёткие свидетельства за то, что он обделался. Но что мы видим от балабола? Он их игнорирует, врёт, сливается на хрен пойми что. Почему? Причина проста - некомпетентное трепло, которое ничего не знает, а трепаться хочет.

И вы могли бы верить тому, что «может царь действительно что-то непонятно объяснил», но нет. Если бы так было, и проблема была бы во всем - что мешало балаболу признать за собою свои ошибки? Ничего. Признал ли он их? Нет.

А теперь подумайте о том, что раз он не хочет их признавать, а хочет попросту игнорировать, то какая у него мотивация в дискуссии? Правильно - оправдать свою никчёмность. И все его попытки юлить прокатили бы в случае, если бы у него не было мотивации врать и прятать ошибки, но она у него есть, причём явная.

А раз мотивация врать у него есть, то он врёт. И ничего иного он не доказал и не показал. Это типичное лицо типичного трепача.

Он совершил очень большую ошибку, которую не совершил другой трепач, а именно сказал хоть что-то конкретное и предметное, а не только блеял пару фраз, как другой. Но как только ты начинаешь о чём-то говорить предметно, то тут всем становится ясно - понимаешь ли ты предмет, либо нет.

И надо запомнить, как запомнил предыдущий. Тактика одна - пару фраз и ноль конкретики, ноль предмета. Предыдущий тоже попытался делать подобное, а потом всем рассказывал о том, что он «На самом деле уже давно не программист».

Это он вам сейчас расскажет о том, что он что-то из себя представляет. Если дело дойдёт до реальности - он будет мычать «я не программист», как он и делал это раньше.

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

vcerloman
()
Ответ на: комментарий от i-rinat

Но я даже отвечу тебе. Дело в том, что когда люди говорят о чём-то, то они предполагаю у тебя наличие какого-то бекграунда. И если тебе что-то непонятно, то это именно твоя проблема и никак иначе. То, что этого бекграунда у тебя нет - ты уже доказал.

И если ты чего-то не понимаешь, то ты можешь спросить. Но ты ведь не хочешь понять, не хочешь спрашивать. Ты всё надеешься на то, что у тебя есть шанс меня поймать. Его нет. Во-первых - ты слишком слаб, а во вторых - я не пишу херню и таких банальных дыр, как в твоей логике - там нет.

И тут мы выходим главное, а именно на истинную суть подобных балаболов. Несмотря на то, что вы обвиняете меня в завышенном самомнения и прочей херне, но на самом деле ею более вы? Почему - это очень просто доказать.

Ты не понимаешь того, что пишу я - твоя реакция? Правильно - дурак я, а не ты. Подобное поведение следствие чего? Правильно - завышенной самооценке и пренебрежении ко всем остальным, в частности - ко мне.

Именно вы - нихрена не понимаете. Именно вы - нулёвые балаболы с в хлам завышенным самомнением. Именно вы только и можете, что нести несвязную херню, врать, игнорировать и обвинять. Ни одна ваша потуга не состоятельна. У вас даже не такой мотивации.

И именно из-за отсутствия мотивации вы и пишите подобную херню, вы и садитесь в лужу. Ведь если ты по умолчанию прав, то зачем тебе думать и что-то писать? Ты напишешь, что неправ я, и авось прокатит.

Тебе подобное поведение привило низкопробное общество, в котором ты существуешь. То, что если кто-то думает иначе - он идиот. Ведь только ты понимаешь, только ты думаешь, а все остальные нет. Вернее все остальные то же думаю, но думают они точно так же как и ты, а их ты просто воспринимаешь как носителей СВОЕГО мнения, хотя на самом деле никакого мнения у тебя нет.

Такие дела. И вместо того, чтобы меняться к лучшему и понять свою проблему - данные персонажи так и будут играть в идиотов, надеясь, что никто этого не заметит, царя забанят, да и ему никто не поверит.

Именно поэтому они и повторяют сами себе эту мантру про проекты и другую подобную херню - не понимая, что она ничего не стоит. Абсолютно неважно то, есть у меня что-то или нет - это никак и ни на что не повлияет.

Кстати, подобное мышление - это следствие слабости. Обычно авторитеты дети перерастают в школе, но по крайней мере те, кто считает себе не рядовой домохозяйкой. Хотя о чём я говорю - они домохозяйки и есть. Ведь говорящая и известная голова знает всё лучше и её надо слушать, а лучше сразу бежать и покупать то, что она показывает.

Главное не волноваться. Верить в том, что дураки другие. Верить в том, что об этом никто не узнает. Верь.

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