LINUX.ORG.RU

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


0

0

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

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

★★★★★

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

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

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

shahid ★★★★★ ()

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

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

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

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

birdie ★★★★★ ()

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

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

lol

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

ansi ★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от ansi

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

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от gres

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

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

birdie ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

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

ansi ★★★★ ()

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

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от birdie

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

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

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

Fletch ★★ ()
Ответ на: Re: Новый системный вызов fallocate() от Fletch

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

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

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

birdie ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

birdie ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от Fletch

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

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

gfh ★★ ()
Ответ на: Re: Новый системный вызов fallocate() от birdie

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

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

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

Fletch ★★ ()
Ответ на: Re: Новый системный вызов fallocate() от Fletch

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

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

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

anonymous ()

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

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

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

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

nevsky ()

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

Fletch ★★ ()

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

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

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

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

ChALkeR ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от birdie

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

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

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

Fletch ★★ ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

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

anonymous ()

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

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

anonymous ()

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

> Господа, а кто знает достоверно - есть такая фича в 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 ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от UVV

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

>> reiser4

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

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

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

shahid ★★★★★ ()
Ответ на: Re: Новый системный вызов fallocate() от anonymous

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

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

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

aydef ()

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

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

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

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

anonymous ()
Ответ на: Re: Новый системный вызов fallocate() от aydef

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

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

SnoWLight ()
Ответ на: Re: Новый системный вызов fallocate() от ansi

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

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

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

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