Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 01, 2008, 19:00 Айде да видим сега големите философи и експерти колко ще си чешат езиците и какви ще ги творят. Въпросът е забавен.
Кое мислите, че е по-удачен вариант за реализиране на файлова система? FUSE (userspace-базирана) или такава, базирана върху VFS слоя на ядрото? Принципно ядрото е писано на С, а моделът на файловите системи по подразбиране се описва много по-добре с обектно-ориентирани езици Това до известна степен доста ограничава реализацията на някакви новаторски проекти в областта. От друга страна, реализирането на файлова система под формата на потребителски процеси, комуникиращи с ядрото е бавно, има много context switching, разчита се на работещи като хората такива процеси, изнасянето на тази функционалност извън ring0 предразполага към проблеми със сигурността. Въпреки всичко, някои ОС-и (обикновенно такива с микроядра) правят точно така. Проблем с block layer-a отдолу обикновено води до лоши последици, когато файловата система се реализира в ядрото. smbfs (въпреки че не е добър пример) е доволно добра илюстрация за което. С FUSE-базирани файлови системи, стабилността на системата не го отнася при такива обстоятелства. Какво мислите ![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 01, 2008, 19:18 Сега нямам време да пиша пространно, но има операционни системи в които _всички_ файлови системи са user space. Бавно е относително понятие.
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 01, 2008, 20:05 Да, тези с микроядра. Но там нещата стоят по доста различен начин.
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: Йордан в Jan 01, 2008, 20:20 Все едно да питаш в секса дали е по-добре да си отгоре или отдолу :-D
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 01, 2008, 20:45 Мнеее, никой не е примрял да е отгоре. За различни неща говорим
![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 02, 2008, 00:10 Такаа, първо да спомена, че IMNSHO FUSE is piece of ####. Разбира се, като фен на Plan9, съм донякъде пристрастен, но последния път като гледах сорса й, изобщо не бях очарован. Използвай v9fs
![]() Второ, да пусна два цитата от умни хора. Първият е от дядо Кнут: Premature optimization is the root of all evil И втория от дядо Фред Брукс: Plan to throw one away. You will do that, anyway. Your only choice is whether to try to sell the throwaway to customers. Като се погледат малко двата цитата, човек може да стигне до следния извод (сигурен съм, че някой го е казал, но не знам кой): Никога не предполагай къде ще са бавните места в програмата и не прави дизайна за да ги избегнеш. Седем пъти мери, и тогава реши ![]() Та предположението, че context switching-a ще забави значително файловата система може да се окаже невярно: a) Повечето файлови системи са I/O bound, и б) ако си спомням правилно context switching-a е около 100-ина цикъла. Друга причина за забавяне може да е твърде многото memcpy-та. При правилен дизайн, обаче, те могат да се избегнат. Проблеми със сигурността не виждам. Ако не вярваш на операционната система да поддържа необходимата сигурност на процесите, не виждам защо трябва да й вярваш да го прави в kernel space. Най-хубавия трик, който е трудно да се реализира в user space, използването на неизползваните в момента страници от паметта за кеш. Имам някакви идеи как може да се реализира в user space, но трябва да поекспериментирам ![]() Та, според мен опитай първо с файлова система в user space. Ако е бавна, мери и мисли как да забързаш бавните части. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 02, 2008, 00:54 Това, че са I/O bound няма да промени факта, че имаш като бонус поне още един context switch за всяка I/O операция и при положение че много процеси се бият за разни ресурси от файловата система, CPU load-a ще скочи несъмнено повече от това, което щеше да бъде, ако файловата система не беше реализирана по този начин
![]() Друго, което съществува като проблем са точно операциите по прехвърляне на памет. Ще имаш по една бонус операция от сорта на copy_from_user() + copy_to_user() за всяка I/O операция, защото работиш в защитен режим и процесите няма как директно да си споделят някакво адресно пространство. Предполагам може да се измисли някаква схема, но звучи извратено. Това с кеширането няма да е толкова сложно за реализиране иначе. Минават ми разни идеи за собствено заделяне на памет за разни pages и пазене на LRU структура от данни за тези страници в рамките на процесът-файлова система. Всички тези страници се намират в област, която предварително е заделена и mlock()-ната. Последното, за да не влезнат без да искат в swap-а. И съответно някой трябва да се грижи най-малко използваните страници да си заминават както си му е реда, за да влизат нови. Обаче всичко това е на теория. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 02, 2008, 06:10 > CPU load-a ще скочи несъмнено повече от това
Фактът, че CPU load-a е по-висок, не значи непременно, че софтуера ще работи по-бавно. > Предполагам може да се измисли някаква схема, но звучи извратено. Може да се измисли, и не е чак толкова извратено. Може да има някои проблеми със security. > Минават ми разни идеи за собствено заделяне на памет за разни pages > и пазене на LRU структура от данни за тези страници в рамките на > процесът-файлова система. Проблемът е как приложението да използва памет, без да я заделя екплицитно, така че ядрото да може да я даде на друг процес ако му трябва. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: Йордан в Jan 04, 2008, 20:02
Все същото е. Всичко зависи от случая, от това за какво ще го ползваш ;-) Едва ли би искал файловата ти система, която държи на раменете си масив от няколко терабайта да е fuse? Или gmailfs да ти се бута по ядрото? Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 04, 2008, 21:00 Нищо не се бута по ядрото (освен fuse модула, който експорт-ва syscalls, използвани от юзърспейската библиотека). По принцип това е идеята, де. Но да, не бих държал на такава файлова система терабайти данни.
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 04, 2008, 21:34 > Но да, не бих държал на такава файлова система терабайти данни.
И защо не? Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 04, 2008, 22:00 Нямам доверие на автора на такова нещо
![]() ![]() Примерно де.. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: Йордан в Jan 04, 2008, 22:04 Още едно място за развъждане на бъгове
![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 04, 2008, 22:14 Да, те щото изобщо не сменят API-то на VFS в ядрото.
![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 04, 2008, 22:41 Промени ли се VFS layer-a, със сигурност се променя и FUSE хехе
![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 04, 2008, 22:52 > Промени ли се VFS layer-a, със сигурност се променя и FUSE хехе
Затова използвай 9P ![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 04, 2008, 22:56 Хехехе
![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: zeridon в Jan 05, 2008, 09:57 Аз съм по скоро за хибридна реализация от типа на drivers in userspace които реално са някакъв микромизерен модул за ядрото и userspace част + инструменти.
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 05, 2008, 12:14 Защо?
Между другото, fuse много наподобява на това, за което говориш. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: zeridon в Jan 05, 2008, 17:04 реално по този начин си осигуряваш апи ...
мда всъщност това е FUSE ![]() трябва да се старая сутрин да мисля повечки Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: gat3way в Jan 05, 2008, 23:21 Ей и v9 било забавно нещо. fuse не бих определил защо е станал толкова комерсиален като идея. Много забавно било това с userspace файловите системи, интересни идеи хрумват. Някой има ли идея къде мога да намеря сравнителни тестове между другото? Гледах едни графики, които според мен са измислени доволно, през LWN...
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 05, 2008, 23:19 Графики за какво?
Най-големия проблем на v9fs е че няма добра документация как да се пишат файлови системи за нея. Един колега, който иска да я използва за някакъв AirForce проект се оплакваше преди няколко дни. Май трябва да взема да напиша някоя статия по въпроса в Linux Journal или Linux Magazine... Иначе ако измислиш нещо хитро и решиш да го пишеш с npfs/spfs и имаш въпроси, питай ![]() Хмм, какво стана, че моят отговор се появи преди въпроса? ![]() Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: maniac в Jan 05, 2008, 23:44 Като сте отворили темата, какво мислите за [GlusterFS].
Имаше лекция по тази тема на последния Openfest. [видео] [Тук] има малко тестове. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: ivo1204 в Jan 06, 2008, 00:00 Начи мисля , че най-важното е за какво ще се ползва тая файлова система .Тогава може да се направи някакви сметки , коя , как и защо.
Ако е за бързина , от rootfs и tmpfs едва ли може да се постигне нещо , дори и близко до тях. Та не мисля , че юзерспейс има шанс. Е , нямам претенции да съм прав.Не съм гледал скоро проекта FUSE и сие де , има ли нещо ново ? Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: romeo_ninov в Jan 06, 2008, 00:17
Защо останах с впечатление че gluster разделя данните във файла от метаинформацията, което от една страна дава възможност за растеж на системата (ако може да се изнесе на отделен сървър), но и лесно може да предизвика тотален срив във файловата система Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: ivo1204 в Jan 06, 2008, 00:27 Аз май размислих:
Ако например тая файлова система е за флашка , то бързината си е абсолютно без значение , и юзерспейс си е 100% по доброто. Като друго предимство , имаш библиотека , без която и дявола няма да може да разчете какво е на флашката , а и много по лесно ще е за писане , и съобразено с особенностите на носитела. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 06, 2008, 00:44 Maniac,
Един приятел, който знае доста за паралелни файлови системи (участвал е в разработката на Intermezzo едно време), не беше чувал за GlusterFS ![]() romeo_ninov, Всички (сериозни) паралелни файлови системи разделят метаинформацията от данните. Данните се разпаралеляват много по-лесно отколкото метаинформацията. Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: romeo_ninov в Jan 06, 2008, 01:01
Точно това имах предвид, защото съм виждал едно решение (нещо като FAS), при което броя на сървърите, грижеши се за метаинформацията беше минимално 3 или 4. Та забележката ми беше че останах с впечатление че при тази файлова система точно файловата система с метаинформация се превръща в SPOF. А колкото и копия на данните да имаш на разположение ако нямаш мета..... Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 06, 2008, 01:09 Обикновено паралелните файлови системи не се интересуват толкова от failure, колкото от scalability. Поне в HPC, където знам повече. Става въпрос за системи като Lustre, Panasas, pNFS, PVFS и т.н.
Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: maniac в Jan 06, 2008, 02:19
Като производителност доколкото разбирам, Glusterfs има минимални разлики спрямо NFS. Имам две щайги, на които имам мерак да я качвам. Ако ми се размине очакваната лудница в офиса през седмицата, ще имам опитни данни скоро ![]() Според вас, може ли да се вярва на това чудо за масив около 3Тб предвид въпроса, който се обсъжда в темата? Fuse се ползва само при клиентските машини. Доколкото разбирам fuse като стабилност не застрашава самата файлова система или поне авторите така твърдят ![]() Работят и по версия без fuse, но е много ранна алфа..... P.S Ще извинявате, ако звуча малко глуповато на моменти, но сега навлизам в тези работи :-) Титла: Userspace (fuse) vs kernelspace файлова система Публикувано от: tarator в Jan 06, 2008, 02:51 > There is no meta data info or meta data server in GlusterFS. It is
> handled by the underlying file system. Also there is nothing central in > GlusterFS. It is truly distributed and no single point of failure. Bullshit. Като гледам няма нито една статия написана за GlusterFS. Започвам да подозирам, че не струва. |