Генерация наборов файлов, которые соответствуют на данном размере медиа для tar-T

Операционные системы используют виртуальную память так, чтобы больше памяти могло использоваться, чем существует физическая доступная RAM. Когда ядро решает, что имеет лучшее использование для страницы физической памяти, ее содержание может быть "разбито на страницы" для устройства хранения данных на диске. Когда к такой странице виртуальной памяти получают доступ, в то время как разбито на страницы, она генерирует отсутствие страницы и попятилась от диска до RAM.

Отсутствия страницы являются аварией для производительности, потому что задержка диска измеряется в миллисекундах, в то время как задержка RAM измеряется в наносекундах. (1 миллисекунда = миллион наносекунд!)

Память не только используется пользовательскими процессами, но также и ядром для вещей как кэширование файловой системы. Во время действия файловой системы ядро будет кэшировать недавно используемые данные. Предположение - то, что существует хороший шанс, что те же данные будут использоваться снова вскоре, таким образом кэширование должно улучшить производительность ввода-вывода.

Физическая память, используемая для кэша файловой системы, не может использоваться для процессов, таким образом, во время действия файловой системы больше памяти процесса будет разбито на страницы, и отсутствия страницы увеличатся. Кроме того, меньше дисковой пропускной способности средств ввода-вывода доступно для перемещения страниц памяти от и до диска. В результате процессы могут остановиться.

5
13.08.2011, 02:10
2 ответа

Я думаю, что у Вас есть задача о ранце для размеров файла.

Который в основном означает, учитывая ряд файлов, найдите самые оптимальные группы файлов, которые могут войти в резервные носители фиксированного размера (наш ранец). Затем Вы хотите использовать наборы, обозначенные, чтобы создать архивы tar и передать их по одному от Вашей локальной машины с помощью любого жесткого диска или флеш-накопителя, который Вы имеете.

Я обрисовываю в общих чертах демонстрационное решение в Python - подходят согласно Вашим навыкам программирования.

  1. Возьмите все входные параметры в сценарии Python и найдите размеры файла отдельных файлов или каталогов. Можно возможно назвать a du -sm на каждом аргументе файла или каталога так, чтобы Python не делал тяжелой работы нахождения отдельных размеров каталогов.

  2. Устраните тех, которые по Вашему пределу медиа сразу же.

  3. Добавьте остальных к списку и примените алгоритм ранца ко всему набору. Много примеров вокруг, как решение Mike's здесь.

  4. Устраните тех, которые добавляются к ранцу в одном раунде и возвращаются к шагу 3 с оставшимся списком.

  5. Повторите шаги 3-4-3 выше, пока все остающиеся объекты в списке не могут вписаться в один ранец (т.е. общий размер оставшихся объектов является меньше, чем предел медиа).

Это должно быть этим!

3
27.01.2020, 20:42

find имеет опцию отфильтровать на размере:

# find file1 file2 .... -size -2000G
0
27.01.2020, 20:42

Теги

Похожие вопросы