• ? help Unix вот есть мейк, который делает около 500 000 файлов небольшого размера (в среднем килобайт). Ну общим, оно все паралельно (в десяток процессов), это реально убыстряет. По наблюдениям все упирается в диск. Хотелось бы что бы работало быстрее, а то ждать пока рандомно запишутся-прочитаются пол ляма файлов по всему моему не ссд умереть ждать (полчаса). Есть ли какие идеи как оптимизировать это все? Оно у меня сейчас на отдельном диске, так что можно какую-то суперкешированную файловую систему с отложенной записью, например. Это на маке все

Replies (12)

  • @Shchvova, рамдиск?
  • @Shchvova, Ramfs? но по-факту записать 500000 файлов — 500k*x syscalls, на них затык думаю всеравно будет.
  • @uglock, сискол выполняется гораздо быстрее, чем чтение с диска
  • @4DA, Это естественно. но их минимум полтора миллиона (открыть. записать, закрыть)
  • @uglock, Intel 5150: 105ns/syscall
    Intel E5440: 87ns/syscall
    Intel E5520: 58ns/syscall
    Intel X5550: 52ns/syscall
    Intel L5630: 58ns/syscall
    Intel E5-2620: 67ns/syscall

    (* 1500000.0 (/ 70.0 1000000000.0))0.10500000000000001 (seconds)
  • @Shchvova, Сделай диск в оперативной памяти и скидывай туда все файлы, а потом можно делать svn update на этом диске, чтобы получать последнюю версию из хранилища. Вариант №2 — хранить файлы на твёрдотельном диске, чтение с него происходит намного быстрее.
  • @4DA, о, я нашел ту же табличку. Ну если не упрется — то гуд, гуд.
  • @uglock, вообще каждая команда мейка еще открывает как минимум 3 файла, и полностью их читает. потом все компилит в 1-3 исодный файла
  • @Shchvova, Ресурсы?
  • @uglock, да. Собирает ресурс пак для игры.
  • @Shchvova, О, слушай, так там сколько процессов запускается? По одному на ресурс? Это тоже по-хорошему бы оптимизировать, если есть доступ к исходникам ресурс компилятора.
  • @uglock, проблема в том что оно не хочется сильно трогать. Оно работает, я радуюсь. Хотелось бы прооптимизировать какими то мета-методами :)