The OpenNET Project / Index page

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



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

Оглавление

Релиз ядра Linux 3.11. Обзор новшеств, opennews (??), 03-Сен-13, (0) [смотреть все]

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


19. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Аноним (-), 03-Сен-13, 02:37 
Вопрос новичка. Каждые несколько месяцев - релиз ядра. Но при этом команда file на всех бинарниках говорит, что бинарник для Linux 2.6.9, 2.6.18 или 2.6.32. Но ведь каждый месяц приходит новая порция возможностей! За эти годы их появилось ну очень много! А можно ли сделать такие бинарники, которые будут требовать ядра 3.11 и никак не меньше?

Даже в моей генте нет бинарников, требующих ядра новее 2.6.32. И только в x32_x32 я увидел много бинарников, требующих Linux 3.4.

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

27. "Релиз ядра Linux 3.11. Обзор новшеств"  +4 +/
Сообщение от pavlinux (ok), 03-Сен-13, 04:14 
>  А можно ли сделать такие бинарники, которые будут требовать ядра 3.11 и никак не меньше?


#include <stdio.h>
#include <fcntl.h>

int main(void) {
   return open(NULL, O_TMPFILE);
}

$ gcc 3.11test.c
opentest.c: In function 'main':
opentest.c:6:20: error: 'O_TMPFILE' undeclared (first use in this function)
opentest.c:6:20: note: each undeclared identifier is reported only once for each function it appears in

Чорт, у меня 3.2.

Вот эта шняга на меньше чем 2.6.27 не заработает.


#define _GNU_SOURCE
#include <fcntl.h>
#include <unistd.h>

int main(void) {

   int pip[2];
   return pipe2(pip, 0);
}


---

А команда file читает elf заголовок из бинарника, там есть код ABI.
Соответствие этого кода и номера ядра прописано glibc, а именно в ld.so

Ты ж на глядя на автомобильный спидометр не впадаешь в депрессию,
когда видишь минимальную нарисованную скорость 20 км/ч. :)

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

29. "Релиз ядра Linux 3.11. Обзор новшеств"  +15 +/
Сообщение от Аноним (-), 03-Сен-13, 04:15 
> int fd = open("/tmp/my.tmp", O_TMPFILE);

"How to write unportable code. For dummies. Pavlinux press, 2013".

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

41. "Релиз ядра Linux 3.11. Обзор новшеств"  +3 +/
Сообщение от Аноним (-), 03-Сен-13, 08:31 
Вмнда не нужна!
Ответить | Правка | Наверх | Cообщить модератору

84. "Релиз ядра Linux 3.11. Обзор новшеств"  +6 +/
Сообщение от Аноним (-), 03-Сен-13, 14:11 
> Вмнда не нужна!

Отличная идея. Поэтому пару идей павлину для его книжки:
1) Use fork(), Luke. Отличный сискол. Удобный. Позволяет сделать многие тяжелые и длинные операции асинхронными и быстрыми. Занахаляву, парой строк, вытолкав противную и длинную операцию в отдельный процесс. Аналог fork()-а напрочь отсутствует в winapi, что вызовет уйму радости у виндyсятников. Ну то-есть они как-то там могут попробовать потрепыхаться с цыгвином, но лулзов будет много. Большинство этих трусов бегут как крысы с корабля завидев первый же fork() в программе.

2) Если бастард попался упорный и fork() не испугался - надо устроить атаку clone()-ов! Замечательный сискол. Может уйму всего. Многие posix'ные вещи в лине на самом деле сделаны через него. Вещь! Может контейнеры отпиливать на ходу, да еще флагами выбирается какие именно namespaces виртуализовывать, etc. Крутота. Юзеры винды отпадут имхо сразу - сомнительно что они смогут эмулировать clone() вот так сходу. Чтобы послать покурить например заодно и юзеров *bsd - можно юзать LXCшные флаги, ибо линуксляторы всякие - застряли на уровне 2.6.22 и больше - никак. Не умеют они LXC эмулировать, хе-хе. А если хочется конкретно оттянуться то можно варьировать флаги и выписать серебряных пуль даже линуксным некрофилам с древними ядрами, прозрачно намекнув что апгрейд неизбежен.

3) Если мы занимаемся околоэмбедовкой, у нас есть не совсем стандартный девайс, с которым хочется поработать из libusb - нам поможет замечательная функция - libusb_detach_kernel_driver(). Ну разве не круто когда программа сама отцепляет ядерный драйвер, обслуживавший девайс, чтобы не мешался под ногами, автоматически? :) А подпись вида "This functionality is not available on Darwin or Windows." гарантирует что любители проприетари будут чертыхаться и сносить/выгружать мешающие работе с девайсом ядерные драйвера в системе сами, руками. Они привычные, им полезно. У них там плангплей же. Вот пусть и выколупывают мешающийся драйвер руками как умеют.

4) Эй, шиндошсятники, запортируйте что-то такое? Вполне юзается в реальных программах. С #ifdef linux, ясен перец.
#define TCP_THIN_LINEAR_TIMEOUTS 16
#define TCP_THIN_DUPACK          17
setsockopt(..., TCP_THIN_LINEAR_TIMEOUTS, ...)
setsockopt(..., TCP_THIN_DUPACK, ...)

Очень полезный улучшайзер интерактивности для TCP соединений, используемых для относительно реалтаймных и интерактивных сущностей. Ну окей, в винде все и так тормозит, так что фиг с ними, с хинтами TCP/IP стеку минимизировать задержки. Подумаешь, TCP на интерактивных данных потормозит. Винда же, там к тормозам привычны.

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

85. "Релиз ядра Linux 3.11. Обзор новшеств"  +3 +/
Сообщение от Аноним (-), 03-Сен-13, 14:35 
5) fallocate(...FALLOC_FL_PUNCH_HOLE...) - ну разве не круто прогрызть дырку в файле, откусив свое законное место на диске назад?! Бонус: пойдут гулять все, чье ядро линукса менее 2.6.38 :). А те у кого не линукс - могут вообще фалломорфировать от такой наглости!
Ответить | Правка | Наверх | Cообщить модератору

96. "Релиз ядра Linux 3.11. Обзор новшеств"  –2 +/
Сообщение от Stax (ok), 03-Сен-13, 15:57 
> Use fork(), Luke. Отличный сискол. Удобный. Позволяет сделать многие тяжелые и длинные операции асинхронными и быстрыми. Занахаляву, парой строк, вытолкав противную и длинную операцию в отдельный процесс

А не пойти ли вам программировать под винду (или другую подобную ось), подальше от наших юниксов? fork() в юниксе это довольно тяжелая операция, и напридумывали десятки костылей разной степени юзабельности, чтобы хоть как-то облегчить ее и уменьшить проблемы, вызываемые внезапным fork'ом (см. например http://www.oracle.com/technetwork/server-storage/solaris10/s... ).

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

104. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Аноним (-), 03-Сен-13, 16:11 
> fork() в юниксе это довольно тяжелая операция

Разработчики eudev с вами несогласны.

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

154. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Аноним (-), 04-Сен-13, 04:19 
> Разработчики eudev с вами несогласны.

А апачисты - вообще форкают по процессу на запрос. Что, конечно, долбанатство, но то что им такая мысль в принципе пришла в голову - как бы намекает.

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

113. "Релиз ядра Linux 3.11. Обзор новшеств"  +3 +/
Сообщение от Crazy Alex (ok), 03-Сен-13, 16:48 
Конкретно в линуксе это довольно легкий вызов. Не зря у вас ссылочка на солярис ;-)
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

121. "Релиз ядра Linux 3.11. Обзор новшеств"  –3 +/
Сообщение от linux must _RIP_ (?), 03-Сен-13, 17:25 
да да. копирование всех областей памяти это еще тот "легкий" вызов.
попробуй сделать fork у процесса который уже съел пару гигов по что нить? после чего померяй насколько легким fork().

за одно подумай почему создание потока "thread" это легкий вызов - а fork() тяжелый.

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

127. "Релиз ядра Linux 3.11. Обзор новшеств"  +4 +/
Сообщение от Crazy Alex (ok), 03-Сен-13, 19:56 
Сразу видно,что кто-то пришел из дремучих юниксов, в которых при форке не используется COW (правда я и не думал, что такие динозавры ещё есть).

Заодно узнай, что в линуксе создание потока и процесса почти не отличаются.

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

132. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от Stax (ok), 03-Сен-13, 20:58 
Внезапно, COW не избавляет от необходимости копировать таблицы страниц. А это может быть о-гого, посмотрите на размер таблиц страниц на сервере с Oracle DB, например. Не зря в статье описаны ухищрения типа - создать рядом маленький процесс и форкаться из него.

А posix_spawn не зря изобрели, в том же линуксе fork() раз в 80 медленнее, чем posix_spawn (http://stackoverflow.com/questions/2731531/faster-forking-of....

Но, в общем, дело не в этом. Дело в том, что во-первых линуксом POSIX-системы не ограничиваются (как бы того не хотелось GNU-фанбоям, пытающимся в каждом проекте дернуть по максимуму GNU-специфичных нестандартных расширений и намеренно пишущих код, который кроме линукса ни под чем не запускается), во-вторых бездумно писать в коде fork() даже в линуксе - плохая идея.

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

133. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от Анонимemail (133), 03-Сен-13, 21:55 
> Внезапно, COW не избавляет от необходимости копировать таблицы страниц. А это может быть о-гого, посмотрите на размер таблиц страниц на сервере с Oracle DB, например.

Внезапно http://www.oracle-base.com/articles/linux/configuring-huge-p...

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

142. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от Crazy Alex (ok), 04-Сен-13, 00:46 
Просто там, где предлагается применить костыли - в линуксе делаются прямые решения. Как те самые huge pages, о которых вам ниже напомнили. Что до меня - то не вижу ни малейшей необходимости создавать себе геморрой ради упрощения жизни проприетарщиков, которым линукс не по вкусу.
Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

146. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от Crazy Alex (ok), 04-Сен-13, 01:25 
А ссылочка хорошая - поглядите, какой ответ лучшим помечен ;-)
Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

155. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от Аноним (-), 04-Сен-13, 04:30 
> бездумно писать в коде fork() даже в линуксе - плохая идея.

Бездумно писать в коде - по любому плохая идея. Поэтому в оригинальном сообщении было написано:  

вытолкав противную и длинную операцию в отдельный процесс

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

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

169. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от arisu (ok), 04-Сен-13, 14:47 
> А posix_spawn не зря изобрели, в том же линуксе fork() раз в
> 80 медленнее, чем posix_spawn

я тебе сейчас весь стройный мир разрушу: fork() далеко не всегда применяется в виде связки fork()/exec().

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

170. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от arisu (ok), 04-Сен-13, 14:53 
> в каждом проекте дернуть по максимуму GNU-специфичных нестандартных расширений и намеренно
> пишущих код, который кроме линукса ни под чем не запускается

а кто виноват, что позикс — убогий bs? если у кого-то нет левой ноги, это не причина производить только ботинки на правую ногу.

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

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

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

178. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от AlexAT (ok), 04-Сен-13, 15:10 
> Внезапно, COW не избавляет от необходимости копировать таблицы страниц. А это может
> быть о-гого, посмотрите на размер таблиц страниц на сервере с Oracle
> DB, например.

Huge pages отменили?

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

209. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от qux (ok), 06-Сен-13, 12:20 
> Внезапно, COW не избавляет от необходимости копировать таблицы страниц. А это может
> быть о-гого, посмотрите на размер таблиц страниц на сервере с Oracle
> DB, например. Не зря в статье описаны ухищрения типа - создать
> рядом маленький процесс и форкаться из него.

vfork избавляет. Хотя сейчас и его костылем обзовут.

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

177. "Релиз ядра Linux 3.11. Обзор новшеств"  +3 +/
Сообщение от AlexAT (ok), 04-Сен-13, 15:09 
> да да. копирование всех областей памяти это еще тот "легкий" вызов.

Проснитесь. Даже в ядре 2.2 нет никакого копирования - есть модификация таблиц страниц и CoW.

> попробуй сделать fork у процесса который уже съел пару гигов по что
> нить? после чего померяй насколько легким fork().

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


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

153. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Аноним (-), 04-Сен-13, 04:16 
> А не пойти ли вам программировать под винду (или другую подобную ось),
> подальше от наших юниксов? fork() в юниксе это довольно тяжелая операция,

Не такая уж и тяжелая. Если там скажем запись в файл на 1 минуту - форк на ее фоне выглядит весьма блекло. А вот остальной программе не придется минуту стоять колом пока этот файл минуту выгружается куда-то. И кода - строчек 5 на все. Дешево и сердито. И работает, ЧСХ. Хотя, конечно, бывает и клиника, типа апача, где тыщщи форков плодятся с поводом и без. Ну да, любое начинание можно довести до маразма...

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

172. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от arisu (ok), 04-Сен-13, 14:56 
> Не такая уж и тяжелая. Если там скажем запись в файл на
> 1 минуту — форк на ее фоне выглядит весьма блекло.

штука в том, что fork() ещё и весьма опасная штука с кучей side effects. но Эффективные Программисты — они применяют fork() только в связке с exec(), поэтому указывают на posix_spawn() как на «альтернативу форку».

хотя намного веселей было бы рассказать про чудесный забег по граблям в случае, если программа использует и pthreads, и forking, и при этом форкается, когда несколько потоков запущены, проинициализированы всякие локи и так далее. и не делает потом exec(). но это уже ракетная наука.

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

168. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от arisu (ok), 04-Сен-13, 14:45 
> подальше от наших юниксов? fork() в юниксе это довольно тяжелая операция

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

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

101. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Слушатель (?), 03-Сен-13, 16:07 
Мощно аргументировал, ничего не скажешь.
Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

77. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Crazy Alex (ok), 03-Сен-13, 13:23 
Ну так через год в любом более-менее новом софте это можно будет использовать. Редхат бекпортирует - к гадалке не ходи, в остальных дистрах никто не ставит новый софт со старыми ядрами. Надеюсь, вы не о бсдах да солярах заботитесь?

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

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

111. "Релиз ядра Linux 3.11. Обзор новшеств"  –1 +/
Сообщение от Аноним (-), 03-Сен-13, 16:24 
> Ну так через год в любом более-менее новом софте это можно будет
> использовать. Редхат бекпортирует - к гадалке не ходи, в остальных дистрах
> никто не ставит новый софт со старыми ядрами. Надеюсь, вы не
> о бсдах да солярах заботитесь?

Есть же замечательная слака с не менее замечательным Сережкой Марковым (и кучей аналогичных сказочных персонажей, которые на слаку тянутся как мухи на... мед), который из принципа сидит на древнем ведре, а прикладной софт обновляет в стиле арча.

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

144. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Crazy Alex (ok), 04-Сен-13, 01:12 
Нет, для этого надо извращаться сильно выше среднего, поэтому такая конфигурация - редкость.
Ответить | Правка | К родителю #168 | Наверх | Cообщить модератору

122. "Релиз ядра Linux 3.11. Обзор новшеств"  –1 +/
Сообщение от linux must _RIP_ (?), 03-Сен-13, 17:29 
> Ну так через год в любом более-менее новом софте это можно будет
> использовать. Редхат бекпортирует -

это как бэкпортировал бэкдоры и local DOS?... ну да.. ну да..

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

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

128. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Crazy Alex (ok), 03-Сен-13, 19:58 
Где хочется стабильности в ядрах - там тем более хочется стабильности в софте - он как-то почаще в среднем ломается и бажит.
Ответить | Правка | Наверх | Cообщить модератору

139. "Релиз ядра Linux 3.11. Обзор новшеств"  +3 +/
Сообщение от Аноним (-), 03-Сен-13, 22:05 
> это как бэкпортировал бэкдоры и local DOS?... ну да.. ну да..

Спортировали стопицот фич - молчание.
Спортировали полтора бага - ужас-ужас, вредители-убийцы, любимый оракел обижают!

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

156. "Релиз ядра Linux 3.11. Обзор новшеств"  +2 +/
Сообщение от Аноним (-), 04-Сен-13, 04:32 
> это как бэкпортировал бэкдоры и local DOS?... ну да.. ну да..

А твой любимый оракл это потом к себе скопипастит безбашенно? :)

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

212. "Релиз ядра Linux 3.11. Обзор новшеств"  +/
Сообщение от Sivolday (??), 18-Сен-13, 17:44 
Бугага
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

167. "Релиз ядра Linux 3.11. Обзор новшеств"  +1 +/
Сообщение от Michael Shigorinemail (ok), 04-Сен-13, 14:41 
> А можно ли сделать такие бинарники, которые будут требовать ядра 3.11 и никак не меньше?

Зачем?

Смысл указания минимальной версии ядра/libc/... -- чтоб можно было закладываться на интерфейсы, которые там появились и далее поддерживаются.

Когда софт работает и на старом ядре -- это вообще-то выгода, а не проблема.

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

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

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




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

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