LINUX.ORG.RU
ФорумTalks

[вещества]Что будет, если открыть одновременно больше 2147483645 файлов?

 


0

1

Вот собственно вопрос: файловый дескриптор- это ведь значение типа int? 3 значения зарезервированы: 0- stderr, 1- stdout, 2- stdin . Что будет, если открыть больше 2147483645 файлов, кроме этих трёх потоков ввода- вывода? Тогдаведь по идее, значения типа int будут исчерпаны? Что произойдёт, короче говоря?

★★

Твой компьютер сколлапсирует =)

suxov ★★
()

Новый файлы открываться не будут, видел дцать раз.

И int оно исчерпает гораздо раньше, ибо поу молчанию в Линуксе есть ограничение всего в 1024 fd на процесс.

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

>И как это будет выглядеть в масштабах системы? Kernel panic? Или гухой зависон без паники?

Зависит от реализации конкретной системы. Скорее всего будет выкинуто сообщение о невозможности открыть файл

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

>В любом случае ей можно SIGKILL послать, я думаю

Не получится - kill то не запустишь. Если только все убивать - с помощью Sys RQ

ttnl ★★★★★
()

А вы проверьте: запустите 10453 процесса и откройте в каждом по 205437 файлов (вроде бы, ограничение именно такое) :) Думаю, у вас произойдет глобальное зависание уже на тысячном процессе ;)

Eddy_Em ☆☆☆☆☆
()

# sysctl kern.maxfiles=21474836450
kern.maxfiles: 2147483645 -> 2147483647

таки 2147483647 для него максимум :)
думаю паники не будет, но новые файлы открывать будет нельзя.

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

ТС вообще это делать не собирается. Никогда. Просто интересно.

Dorif ★★
() автор топика

собстно а почему бы взять и не проверить? :).

true_admin ★★★★★
()

прорвется брешь в пространственно-временном континууме и тебя туда засосет. И будешь ты болтаться без времени и пространства, неистово мучаясь в агониях всего мира.

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

> Нормальные шеллы имеют встроенный kill на этот случай.

Поподробнее пожалуйста.

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

даже такой быдлокодер как я проверяет открылся ли файл

Loki13 ★★★★★
()

> [вещества]Что будет, если открыть одновременно больше

Должно отпустить

Led ★★★☆☆
()

да постоянно такое бывает на серверах. апач начинает какать ошибками вот и всё. всё, что завсит от создания файлового дескриптора начинает либо глючить и сыпать ошибками о невозможности создать файл либо просто не работает.

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

Зачем наугад? Начни с 214748345 или типа того

lyset ★★★
()

RTFM!

Сначала наступит EMFILE (тюнится ulimit -n), потом ENFILE. Когда именно наступит ENFILE не знаю.

linuxfan
()

У меня получилось открыть чуть меньше 5,5M файлов, дальше начался ENOMEM
. Памяти 2Гб, 2.6.32-5-686.

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

Хм, размер одного файла(по минимуму)- 4 килобайта. ибо таков размер кластера большинства ФС и соответственно минимальный объём памяти, занимаемой файлом в RAM. Всё правильно. А если бы памяти было бы больше 2 гигов? Например, террабйт? Удалось бы осуществить сие грязное дело до конца?

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

5,5M x 4Kb даёт 21Gb. Размер ядерной структуры file 128 байт, + inode 96 байт. Размер памяти, которую может использовать ядро под свои нужды по дефолту 1Gb.

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

Оппа, я на порядок ошибся... Спасибо.

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