LINUX.ORG.RU
решено ФорумAdmin

Ограничено создание файлов на поток 849файлов/1-ая секунда, далее 3-4

 , ,


1

1

Привет, всем!

сижу в эмуляторе Windows в VirtualBox. Пишу в C#

первую секунду создаю и закрываю через C# ~849 файлов . – создаются равномерно 84 файла/100мс со второй секунды создаю по 4 файла в секунду.

а хотелось бы 20000 файлов каждую секунду создавать, потому что SSD.

подскажите пожалуйста, какие настройки мне следует изменить в Linux(комманда)? Что на это может влиять? Какой вывод можно сделать, что бы найти причины этого события?

void Main() {

{
    Parallel.For(
                0,
                80000,
                i =>
                {
                    FileStream fs = File.Open(@"C:\temp\"+i.ToString(),FileMode.OpenOrCreate);
                    fs.Close();
                }
            );
}

} Main();

может отчет какой нибудь поможет пролить свет? –возможно это ограничения .Net 2.1, но думаю что нет.

пробовал изменять ulimit, без перезагрузки, она ему я так понимаю не требуется.

причина может быть в linux,virtualbox,C#

===========================================

Решение: 03/02/2024 Еще раз спасибо, anonymus.

Вариант с обратите внимание на настройки VirtualBox оказался верным.

Я удалил его как <Сетевой диск> и прикрепил его как <Виртуальный диск>. Теперь происходит по 10к+ открытий в секунду как и должно быть.

тема медленности работы виртуальной машины с дисками/сетевыми дисками и идеи подключить как виртуальный диск(с шагами, на всякий случай) раскрыта здесь https://hackware.ru/?p=3773#616



Последнее исправление: rowcol (всего исправлений: 6)

Ответ на: комментарий от cobold

Привет, Я предположил, что это ulimit, или другая настройка. Какая не знаю.

У меня скатывается количество открываемых файлов от 800, до 4 в секунду. В голом Windows у меня открывается и закрывается 20000 файлов в секунду.

Это какие то ограничения Базовой операционной системы я думаю. Вот при чем здесь Линукс и как его настроить, я пытаюсь понять.

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

Вот при чем здесь Линукс и как его настроить, я пытаюсь понять.

Ни при чём и никак. Обращайся в поддержку VirtualBox. ulimit — это для нативного кода, ни про какие файлы в виртуализированной винде оно знать не может.

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

если кто то знает как мне ее решить

Не использовать виртуализацию, в особенности VirtualBox? Вообще не очень понятно, что тебя удивляет в этой ситуации. Это не бесплатная технология, она имеет накладные расходы. Собственно, какую проблему ты пытаешься решить?

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

Тогда проще всего смириться и как-то учитывать потери производительности от виртуализации. Если хочется как-то ускорить свою загадочную задачу, то сначала попробовать VirtIO на KVM, а если железо позволяет — проброс PCIE. Это, наверное, всё, что тут а принципе можно сказать.

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

Я все таки рискну предположить, что «пользователь» VirtualBox находится в группе, на которую моё изменение ulimit для основного текущего пользователя не привело к изменению характеристик «пользователь» VirtualBox.

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

Все может быть, но т.к. никто не знает что ты там у себя и как запускаешь, то врядли кто-то сможет помочь. Если только появится какой-нибудь телепат-стажёр

cobold ★★★★★
()

SSD только на короткой дистанции быстрый, а дальше он работает на скоростях обычного средненького HDD, чаще даже хуже, так как фейковая скорость в виде буфера заканчивается. Вот и всё.

Чтобы была скорость, нужно, подождать сделав паузу лол. Причина в железе, рассматривай самую низкую скорость работы на SSD как её реальную скорость работы. Ну или работай с самымми тяжёлыми файлами в начале и в надежде на то что в тот момент кеш ссдюка не будет забит другим приложением ЛОЛ.

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

Затем, что иначе придется все это писать в VS Code в Linux. Просто так настроено.

Что «это»? Что «настроено»? Тебя кто-то заставляет что-то делать именно в виндо-виртуалбоксе установленном на линукс-хосте?

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

потыкал настройки в GUI, типа ускорить то, ускорить сё. Сейчас переношу образ с жесткого диска. Может и поможет. Но каталог в котором происходит создание файлов не на жестком диске. Потом еще что-то попробую. Параллельно исследую документацию VBoxManage.

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

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

Потом он создал новую виртуальную машину и поставил устанавливаться Windows, а ESXTOP показывал скорость записи 10-20 МБ/с, в то время как она должна была быть на уровне 400-500 МБ/с.

https://vm-guru.com/news/vmware-esxi-65-storage-performance-problems

и вообщем в этом случае у человека была проблема в драйверах.

rowcol
() автор топика

а хотелось бы 20000 файлов каждую секунду создавать, потому что SSD.

Не хотелось.

Parallel

Если ты будешь создавать миллион потоков твоё говно быстрее работать не будет. Переключение контекста потока дорогое, сисколы дорогие.

crutch_master ★★★★★
()

сижу в эмуляторе Windows в VirtualBox. Пишу в C#

Пиши на линуксе в vscode. УМВР.

возможно это ограничения .Net 2.1,

Переходи на Net 6+, неткорь перебрендирована уже, 2.1 всё :)

а хотелось бы 20000 файлов каждую секунду создавать, потому что SSD.

чтобы что?

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

Сейчас переношу образ с жесткого диска. Может и поможет. Но каталог в котором происходит создание файлов не на жестком диске.

А на чем тогда? Прямая запись на святой дух?

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

Еще раз спасибо.

Вариант с обратите внимание на настройки VirtualBox оказался верным.

Я удалил его как <Сетевой диск> и прикрепил его как <Виртуальный диск>. Теперь происходит по 10к+ открытий в секунду как и должно быть.

rowcol
() автор топика