LINUX.ORG.RU

Новый системный вызов fallocate()


0

0

В ядре Линукса 2.6.23 включен патч для поддержки нового системного вызова fallocate(), который позволит программам запросить у ядра непрерывный кусок пространства в файловой системе для избежания фрагментации (эта функция также доступна в Windows 2000 и выше). Кроме этого, патч повышает надёжность выполнения некоторых задач. К сожалению, данная возможность реализована пока только в ext4fs (патч для XFS пока тестируется), потому что данный системный вызов требует реализации данной функции на уровне самой файловой системы.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

/me Ext4 не осилил (был облом при монтирований с extent'ами), посему юзаю reiser4 с transparent gzip и счастлив как слон!

shahid ★★★★★
()

В ответ на первый удалённый комментарий:

http://en.wikipedia.org/wiki/File_system_fragmentation#Proactive_techniques

Кстати, для включения fallocate в ext4fs, там нужно указывать параметр монтирования extents. Ну и, конечно, user space приложение должно этом вызовом воспользоваться.

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

тормозишь - falloc() уже давно есть

anonymous
()

>эта функция также доступна в Windows 2000 и выше

lol

"Ваша *BSD отстой, в Linux это уже давно есть!" (c) Красноглазый ЛОРовец

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

> В ответ на первый удалённый комментарий: Спасибо за ссылку. Тяжко такое читать, на буржуйском. Тем более что мне так подробно и не надо было...

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

> ansi (06.08.2007 17:07:44)

Дурак, в винде она давно была нужна из-за бешеной фрагментации файловых систем.

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

>"Ваша *BSD отстой, в Linux это уже давно есть!" (c) Красноглазый ЛОРовец

это была попытка остроумно БЗДануть? не получилось

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

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

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

>Дурак, в винде она давно была нужна из-за бешеной фрагментации файловых систем.

Умный, бешеная фрагментация началась в Линаксе?

Сам понял что сострил?

ansi ★★★★
()

А есть ли какая тулза, коя показала б фрагментацию на диске? Типа каков процент, и какие файлы фрагментированы. А то как спросишь про дефрагментатор, так сразу заткнут рот - ОН ЗДЕСЬ НЕ НУЖЕН. А удостоверится можно то?

А то, видите ли, у вас (скорее даже у НАС) как чего нет так этого не надо (в большинстве случаев согласен, так оно и есть).

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

>И не только - для записи streaming video - очень полезная фишка.

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

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

> а как при потоковом видео возможно узнать размер файла,

Можно зарезервировать достаточное место, основываясь на предположениях о длине трансляции. Например, если у вас MPEG2/DVD длиной 2 часа, то достаточно выделить 10Mbit/sec (max for DVD) * 7200 = 9000MB.

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

Настоящий работает с партицией напрямую, минуя VFS.

Этот, как я понял, основывается на освобождении свободного места (путём переноса файлов) и возвращении информации обратно.

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

Писать блоками. Например потом блоками по 10МБ читать будет быстрее, чем кластерами по 4КБ.

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

>Можно зарезервировать достаточное место, основываясь на предположениях о длине трансляции. Например, если у вас MPEG2/DVD длиной 2 часа, то достаточно выделить 10Mbit/sec (max for DVD) * 7200 = 9000MB.

а как ФС узнает продолжительность трансляции?

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

> а как ФС узнает продолжительность трансляции?

Программа скажет, что не понятного то? А программе скажет юзер, мол трансляция 2 часа, или ещё как.

anonymous
()

а что, интересно, будет если функция не сможет выделить мне 5Гб непрерывного места на диске?

Или еще хуже, выделить выделила, а освободить забыла, если оно не понадобилось.

Вообще, конечно весЧ интересная.

nevsky
()

Xfs в лес, а jfs extent'ы давно уже поддерживает..

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

> А есть ли какая тулза, коя показала б фрагментацию на диске?

Конечно, стандартные тулзы из e2fsprogs. fsck показывает уровень фрагментации по диску (/sbin/fsck -vn), filefrag (/usr/sbin/filefrag) говорит число фрагментов для конкретного файла.

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

>Программа скажет, что не понятного то? А программе скажет юзер, мол трансляция 2 часа, или ещё как.

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

Fletch ★★
()

А шо такое "фрагментация"? (с)

Если серъёзно, то на дефрагментацию и так 5% диска уходит. Зато фс не фрагментируется.

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

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

>А шо такое "фрагментация"? (с)

"Не читайте советских газет" (с)

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

>Можно отдельный пустой volume выделить для этих целей.

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

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

> Конечно, стандартные тулзы из e2fsprogs.

$fsck WARNING!!! Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.

Я обкакался...

anonymous
()

Господа, а кто знает достоверно - есть такая фича в Win32, и как называется функция в API? А то первый раз слышу, если честно, - при том что очень было бы нефигово, если бы такая функция была. Мы как раз видео в реальном времени пишем.

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

Ага, спасибо, убейтесь об стену. По существу сказать нечего?

anonymous
()

ext4fs... Я слишком долго ждал, надеялся на чудо...

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

> Господа, а кто знает достоверно - есть такая фича в Win32, и как называется функция в API? А то первый раз слышу, если честно, - при том что очень было бы нефигово, если бы такая функция была. Мы как раз видео в реальном времени пишем.

Как об этом можно не знать? Как?

http://msdn2.microsoft.com/en-US/library/aa365544.aspx

http://research.microsoft.com/BARC/Sequential_IO/seqio.doc

На данный момент 100% использует эту фичу WinRAR последних версий (точно >=3.50).

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

SetFilePointerEx или SetFilePointer если не надо больше 4ГБ затем SetEndOfFile или просто WriteFile

а доступно это, начиная с win95, просто программеры редко читают документацию

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

>> reiser4

> Раздел до конца пробовал заполнять?

Со всем KDE3, куском GNOME, девел-пакетами, несколькими svn-repos, jdk-1.7, netbeans, всякими stellarium-celestia-и-др.др.др., /home на ~1,7 гб (если несжато) и ещё кучей всякой дребедени, у меня согласно df занято 3,8 гб, то думаю ваши опасения напрасны.

Зы: по многим тестам, reiser4 - самая быстрая! Да будет флейм!

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

>линуксоидам - не прошло и 12 лет, как у вас это появилось бугага!

кое в чем линаксу еще долго догонять винду ( многоуровневая архитекткра i/o, полностью асинхронный i/o aka completion ports, асинхронный i/o cancelation и т.п. ). забавно, однако все это было уже в NT-4.0, а может и раньше. забавно, но ребятам из IBM и Oracle-а пришлось в свое время изрядно попотеть чтобы убедить г.н.-а Торвальдса в необходимости KAIO и RAW-IO. он долго отпирался - упертый оказался мужик! а сколько было сломано копий, чтобы убедить сего господина включить в ядро потдержку потоков?

aydef
()

Исправьте последнее предложение.

> К сожалению, данная возможность реализована пока только в ext4fs (данный патч для XFS пока тестируется), потому что данный системный вызов требует реализации данной функции на данном уровне самой данной файловой системы.

Так данное предложение будет звучать лучше.

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

Посмотрел на картинку. В цвета не вникал, но там текстом чёрным по почти белому написано: "fragmented percentage: 0.04%".

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

Это все лажа. Покажи прямые тесты сравнения производительности NTFS против Reiser & XFS. Я не видел таких ни разу. Судя по работе Bittorrent могу сказать, что NTFS полный сакс, Reiser тоже. XFS быстрее райзера в два раза примерно.

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

> "Ваша *BSD отстой, в Linux это уже давно есть!" (c) Красноглазый ЛОРовец

Бздунишки считают Windows клоном *BSD?

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