Опубликован исходный код распределённой файловой системы 3FS (Fire-Flyer File System), разработанной для использования в инфраструктурах тренировки и выполнения крупных моделей машинного обучения. ФС входит в состав AI-платформы Fire-Flyer и используется китайской компанией DeepSeek, развивающей языковые модели, охватывающие более 600 миллиардов параметров. Целью создания 3FS называется предоставление совместного хранилища для упрощения разработки распределённых приложений. Работа ФС оптимизирована для использования в сетях RDNA и хранения информации на SSD-накопителях. Код 3FS написан на языке С++ (ChunkEngine на Rust) и открыт под лицензией MIT...Подробнее: https://www.opennet.me/opennews/art.shtml?num=62816
>"Код 3FS написан на языке С++"
Неужели на C++ стали настолько редко писать, что вы теперь каждому проекту радуетесь?
Написал так, как будто вы C++ не освоили. C++ это стандарт индустрии разработки!
>C++ это стандарт индустрии разработкиC# же
> C# жеЭто у ИНДУСтрии. Которой нечего ловить в high-performance, by design. Жирный обсирак с LSE и "windows server обгоняет linux" тому отличный пример. Ога блин, LSE послал нетчиков и майкрософт в пользу Linux и C++, скупить тиму - дешевле оказалось чем покупать релизы софта у нетчиков которые не выдавали обещанные параметры по латенси (что для биржевиков, так то, денег стоит).
не неси чушь, всему своё применение
Я согласен, всему своё применение. Но давай будем честны, С# при всём желании уж точно не создан для написания файловых систем. Тем более под Линукс.Десктоп приложения на винду, бэкенд всякой вебни - это пожалуйста.
> вяжите его, пацаны, чтоб не сбежал, пока я рассказываю, что сишарп кроссплатформенный
Почему бы и нет? с учетом AOT компиляции и простой возможностью работы с ос api, некоторые и на делфях писали драйвера, вон даже чет вспомнилось: https://rsdn.org/article/delphi/kmdelphi.xml
> Десктоп приложения на винду, бэкенд всякой вебни - это пожалуйста.Бэк для вебни? На этом? Только если вы отчаянный мазохист, и у вас дофига денег и сотрудников чтобы делать все долго, хреново, мучительно и неподдерживаемо. Ибо даже майкрософт нынче хедхантит - хрустиков! Для переписки бэка их онлайнового офиса, внезапно.
Реально бэки для нагруженного добра сейчас пишут на игого и - вот - хрусте.
> "windows server обгоняет linux"dotnet сегодня гораздо ближе к линуксу, чем к винде
> скупить тиму - дешевле оказалось чем покупать релизы софта у нетчиков
> которые не выдавали обещанные параметры по латенси (что для биржевиков, так
> то, денег стоит).Значительная часть бирж на dotnet написана. БКС, форкес практически весь это c#/java, Торговые приложения все кроме метака
>> "windows server обгоняет linux"
> dotnet сегодня гораздо ближе к линуксу, чем к виндеЭто вам маркетинг MS в буклетиках такое написал? Основная проблема майкрософта - их маркетологи. Которым шлея попадает под хвост нести дичь, страшно далекую от реалий.
Из нетчика линуксоид - как из г-на пуля! Прикольно, наверное, когда считают враждебным чужеродным элементом - и те и другие. Я как линуксоид - предпочту не иметь с вами и вашим софтом ничерта общего. Вы для меня враждебный представитель чуждой культуры, смеющей нас рассматривать как второй сорт, и при этом лицемерно вещать о кроссплатформе - при наличии winforms, wpf и кучи откровенно непортабельного софта, и отсутствии кроссового UI тулкита.
> Значительная часть бирж на dotnet написана.
> БКС, форкес практически весь это c#/java,Майкрософт умеет лить елей в уши своим маркетингом и втирать очки. Но когда достигнутые параметры не пустой звук и это начинает стоить денег, все почему-то умнеют :)
> Торговые приложения все кроме метака
А LSE таки вот послал в пень всех этих супер-партнеров мс, хотевших по 40 лямов грина за каждый релиз. Те кто специализируется на высокочастотной торговле - и подавно. В криптовалютах плюсы и немного хруста, опять же. А у банков так то и софт на COBOL местами есть, так что считать "финансовиков" какой-то метрикой софтостроя в целом - я б пешком постоял, это довольно специфичное и нишевое.
> Это вам маркетинг MS в буклетиках такое написал?Нет, это я на практике наблюдаю. Есть облако Азур, есть микросервисы, есть AWS. Дотнет это уже лет 5 как про контейнеры
> Из нетчика линуксоид - как из г-на пуля
> Майкрософт умеет лить елейКакой-то ты религиозный фанатик.
Просто запусти Hello-World на дотнете https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-i... хотя бы разок, может чего щёлкнет в голове
хейтерок, успокойся
Это всего лишь жалкие буковки. А стандарт - это тысячи страниц правил написания кода, которые ты должен знать наизусть. Иначе можно такую ахинею написать...
Только раст имеет право на экс(ин)клюзивное упоминание?
Видимо появилась более какая то конкурентноспособная file system, раз они открыли код.
... (ChunkEngine на Rust)
> Код 3FS написан на языке С++ (ChunkEngine на Rust)Неужели у кого-то получилось совместить 2 языка в одном проекте и при этом у престарелых снежинок не сгорела пятая точка?
Наверное надо быть азиатом, для таких подвигов.
Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.
> Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.Так ты не сравнивай дисциплинированных китайцев, с изнеженными амерами.
Ведь скандал устроли и свалили что растовик, что сишник.
Т.е дело не в языке, а в воспитании.
>а в воспитании«Культурная революция» в Китае даёт плоды ?
>>а в воспитании
> «Культурная революция» в Китае даёт плоды ?Не уверен.
Т.к япошки почти такие же (надеюсь мои знакомые меня не читают))) - могут быть супер сосредоточенными и трудолюбивыми.
А в пятницу ужраться в хламину и валяться под забором))
И корейцы тоже.
Япония, Китай, Корея - все "трудолюбивые".
> Т.к япошки почти такие же (надеюсь мои знакомые меня не читают))) - могут быть
> супер сосредоточенными и трудолюбивыми.
> А в пятницу ужраться в хламину и валяться под забором))А потом еще независимые аудиторы код тойоты какой проаудитят - а там... мама дорогая, забито на все мыслимые safety правила и некомпетентность на некомпетентности в критичных местах.
Правда, Боинг показал что американцы этому тоже не обязательно что чужды. Как говорится, ничего личного - это бизнес.
В прошлый раз по твоим высказываниям о результатах расследования и причин тебе кажется за ланиты напихали.
Производительность труда, тем не менее, столь "велика", что переработки считаются само-собой разумеющимся
Злые языки поговаривают что трудятся они недостаточно эффективно чтобы позволять себе по пятницам под заборами валяться, но, тем не менее, валяются
Просто партия сказала надо. На расте так на расте. Видно анон с китайцами не работал.
> Неужели у кого-то получилось совместить 2 языка в одном проектев чём проблема если делать с нуля а не переписывать?
>> Неужели у кого-то получилось совместить 2 языка в одном проекте
> в чём проблема если делать с нуля а не переписывать?И большая ли разница?
Им точно так же нужны люди знающие 2 языка.
Точно так же проблемы совмещать код.Да и в чем проблема даже переписывать?
Есть проверенные схемы: создается биндинг, кусок кода заменяется, процесс повторяется.
Если ты про ядро - то там даже код СИшки не трогали, просто у вахтера полыхнул зад.
> Им точно так же нужны люди знающие 2 языка.проблема вообще не в этом, Тут написали движок на раст с нуля, дергают его из С++. Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.
> Тут написали движок на раст с нуля, дергают его из С++.Да, отличное применение в качестве "ядра" программы.
> Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.
В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги.
Кода ДМА вообще не изменялись.
> В линуксе хотели писать отдельные драйвера. Для этого нужны биндингидля этого не нужны никакие биндинги - вызывай напрямую С шные функции, но тогда вопрос нахера раст нужен
Вызов напрямую ядерных методов - это и есть биндинги. Ну то-есть, конечно, никакие биндинги не нужны, если ты в каждой своей растовой функции делаешь свой маленький биндинг. Но гораздо проще все подобные штуки вынести куда-то в отдельное место, чтобы удобно было вызывать из раста растовые функции.
> Вызов напрямую ядерных методов - это и есть биндинги.чем тогда занимается rust for linux пятый год? такие биндинги должны генерироваться из сишных заголовков
можно вынести в systemd. глупо делать огромную подсистему биндинга, которая на самом деле не биндинг, а враппер. которая все равно не будет решать проблемы ядра - костыли с условной компиляцией, нестабильное апи и засилье мантейнеров правильных корпораций (а не архитектуры)
> В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги.
> Кода ДМА вообще не изменялись.Только бортанули исправные комиты сишникам - из за факапа рефакторов у хрустиков. А так то да, оно не импактит сишников, бла-бла-бла. Только слова с делами - разошлись. Вот незадача.
> Им точно так же нужны люди знающие 2 языка.Я тебе больше скажу, нигде не нужны люди, знающие только один язык. Много где можно обойтись и такими, но даже там начинают о чём-то догадываться. Мало иметь глубокие знания в одной области, к ним всегда нужны широкие знания в большим количестве других областей. Иначе невозможно ни достичь глубины знаний, ни субъективно оценить насколько они глубоки.
> Да и в чем проблема даже переписывать?теперь все изменения API нужно синхронизировать с кодом на раст. Такие изменения долго внедряют а сейчас будет ещё медленней, они не попадут в релиз пока растокод не перепишут чтобы он хотя бы компилировался. Это гемор внешних драйверов - надо постоянно их корректировать под смену внутреннего API, а сейчас этот гемор внедрили прямо в ядро.
Так а изменилось-то что? Раньше можно было ломать любые API без согласований и хоть трава не расти? Точно так же договаривались и согласовывали. И гемор тут только у тех, кто засиделся на вахте.
Если каждому языку в проекте определено своё место, то получится.
А когда ЯП продвигается по идеологическим соображения нагромождая обертки, а руководство не может сформулировать четкую позицию, то получится Линпус.
> А когда ЯП продвигается по идеологическим соображения нагромождая оберткиТак и в ядре определили: "пишите драйвера, а в базовые структуры не лезьте"
Но нет, нашлись вахтеры, которые решили еще поуказывать как именно использовать их код.
Их конечно на место поставили, но драма все равно случилась.
> совместить 2 языка в одном проектеВ ff уже давно
>Неужели у кого-то получилось совместить 2 >языка в одном проекте и при этом у >престарелых снежинок не сгорела пятая точка?
>Наверное надо быть азиатом, для таких >подвигов.Из известных проектов первым была Be-BE OS.Основное ядро С ,часть драйверов и компонентов ядра С++.Не самая удачная идея- не в смысле провала а в смысле обслуживание.Во всяком случае гораздо надёжнее 98 винды,ну а с скоростью работы_вошла в легенды.Гайка (свободный форк) была вынуждена древней версией gcc пользоваться,пока они не приняли решение оставить совместимость на уровне исходников,а в 64 бит версии даже совместимость полностью поломали.
> Наверное надо быть азиатом, для таких подвигов.Они и код на питоне могут нафигачить. С переменными на японском, не говоря уж о коментах. Теперь попробуй его такой майнтайнить :)
Совместить не проблема, проблема сопровождать на длительном периоде.
Languages
C++ 87.0%
Rust 4.3%
OpenEdge ABL 3.4%
Python 2.1%
C 1.7%
CMake 0.8%
Other 0.7%протестую.
почему в новости про раст написали, а про питон с сями и опенедж - нет?
повесточку (тм) отрабатываем?
В сумме <5% и ты спрашиваешь почему не заметили эту маргинальщину?
доо четыре процента раста - не маргинальщина ни разу"это другое! это понимать надо!" (с)
Да это другое. 4.3% это не 2.1% и не 1.7%, но ты бесись от непонимания своей же сводки.
Наверное потому, что на расте, а не на си/питоне/опенэдже, написан высокопроизводительный движок работы с распределенным хранилищем на скоростях, измеряющихся в TiB/s?
Код писал сам китайский AI? В принципе логично, ведь по C++ гораздо больше обучающего материала.
>Код писал сам китайский AI?Ага, "всего за $6 млн.":
https://semianalysis.com/2025/01/31/deepseek-debates/
Как же они это сделали без недопущенной прослойки в ядре.
а что, буквы для x в xFS именах уже закончились?
Посмотрел код на С++. Ну классами они там не особо балуются, больше как код на С. В некоторых файлах С-шные fprintf и sscanf, есть даже goto.
Странно, в других файлах рядом корутины, boost, fmt как в С++. Как будто каждый файл писал отдельный человек и в разном стиле.Посмотрел код на Rust'е, - конечно, unsafe функций много. Но старались аккуратно писать и в одном стиле, как будто один человек написал весь код на Rust'е.
Через git blame можно статистику собрать. Хотя, конечно, это не скажет о реальных авторах.
Blame говорит: initial commit 2 days ago и всё
бггг! Все что нужно знать о кетайском стиле разработки.
ну или о том, что просто сделали squash, чтобы не палить историю разработки, в которой может быть что-то начиная с nda и заканчивая ворованным кодом, который переписали до неузнаваемости
В расте есть понятие идиоматичного кода, а в сях - в лучшем случае код полиси + линтер
Мне кажется, создать файловую систему сложнее FAT32 могут только лучшие специалисты мира. IBM сделала HPFS. Sun создала ZFS. Microsoft уже 25 лет делает ReFS и так и не сделала. Btrfs сделали, и даже используют в продакшене. Однако Red Hat бросила бэкпортировать патчи Btrfs в RHEL 6 (когда я увидел количество этих патчей, я пришёл в ужас... Неужели файловые системы _настолько сложны?).
Файловая система (а точнее, система управления файлами) - фактически СУБД, конечно, технологии СУБД сложны. Кроме этого в современных файловых системах используется интегрированные шифрование, избыточность (redudancy), управление томами, снимки (а в BTRFS - снимки снимков), advanced control lists. Из-за всего этого файловые системы превращаются в неподъёмных монстров.
В современных ФС это всё к другому слою относится. А во всяком хламе - да, запихнуто в ФС напрямую, вместе с управлением томами.
с разморозочкой, чувак. Тебе у нас - не понравится.
Твоя systemV уже не очень современная.А в _современных_ таки да - оказалось что ФС _нужно_ кое-что знать о том, что находится под ней. Иначе эффективной работы не получится.
Вон тебе китайцы примерчик подогнали - есть у тебя три одинаковых блока, на какой сам сядеш... ой... то ись - какой читать будииим ? Один у тебя на nvme, другой на ssd, третий на обычном диске. Ок, прочитали - ой, чексумма не совпала, с китайскими nvme бывает. Как объяснить "другому слою" что это надо выкинуть и перезаписать копией с другого источника - если этот "другой слой" у тебя примерно как в линуксе - не умеет ровно ничего из нужного?
А так-то и zfs, и в ReFS+spaces слои, безусловно, есть. Но внесистемные, в смысле, то что в ядрах было до того - такого не умеет, пришлось вот свое придумывать, отдельное.
> А в _современных_ таки да - оказалось что ФС _нужно_ кое-что знать
> о том, что находится под ней. Иначе эффективной работы не получится.Более того. Оно и на ошибки реагирует при этом - в стиле абиззяны с гранатой. Т.е. никогда не знаешь что будет. Характерный пример - bcache (не -fs) на SSD под какой-то фс.
Когда SSD протирается - эксперименты в интерьере показали что бывает все что угодно. И конечно никакие RAID и проч с вон теми этажерками к этому не готовы. При том все что угодно обычно выглядит - "не очень". Это и побудило непоседу Кента явно знать какая реплика где и в каком состоянии. В том числе и для фронт/кэш.
Не, если такое суперкомбо собрать иначе - будет - как у вон тех с bcache и обычной ФС. Т.е. однажды на нагруженной системе где SSD таки дотерся - резкая, ВНЕЗАПНАЯ вермишель в стиле фаталити. Что-то типа btrfs порой успевает поорать в лог про csum error и если вовремя заметят - даже выживает. Но в целом - такое себе комбо!
> обычном диске. Ок, прочитали - ой, чексумма не совпала, с китайскими
> nvme бывает. Как объяснить "другому слою" что это надо выкинуть и
> перезаписать копией с другого источника - если этот "другой слой" у
> тебя примерно как в линуксе - не умеет ровно ничего из нужного?Надо же, пох наконец начал догыдываться в чем фишка... :). Круче всего у кента сделано, настолько нагло еще никто не интегрировал. Глядишь, поэтому и победит. Ничто так не факапит перспективы проекта как отсутствие амбиций...
Задачка, там чуть сложнее.
Представь, что ты чёткий поцан из нижнего новгорода, и тебе надо завра-послезавтра запгейдить N девайсов на 20 обновлений. Каждое обновление доступно из 3 источников из 50. Кроме тебя в нижнем нарисовались еще 30 пацанов с 10-40 обновлениями. Кроме нижнего новгорода для этих 50 источников есть еще 150 клиентов у которых по 20-40 запросов из 30 мест. Каждый источник может направить 8 комлектов до 4 компонентов в каждом, но в разные места.
Надо чтоб всем всё приходило сразу в течении "пинга", как казанэкспрес, а не в течении месяца, как в Озон и Вайлберис.
А чем оно от CEPH отличается, ну помимо Direct I/O ? Может кто-то пояснить?