Автор Тема: Расширенный тест на производительность.  (Прочитано 105879 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #90 : Декабрь 03, 2016, 03:50:30 pm »
Ага, временно - хорошо.

Создал 4-гигабайтный файл и сделал прогон для наиболее быстрых решений:
comdiv/hardcore
real 1m25.488s
md5sum = e6d6ad0bad107695536bf8bef475f9eb  output

vlad/fast
real 4m9.742s
md5sum = e6d6ad0bad107695536bf8bef475f9eb  output

Интересное кино получается
Ещё замечание 4 минуты да и 1 минута - это очень мало. Такое ощущение, что у тебя весь файл поместился в ОЗУ (в дисковый кэш системы). И тут уже начинает играть роль состояние оного кэша (коий также неплохо бы полностью сбрасывать перед началом запуска каждого решения) и насколько алгоритм к нему дружественен. Например если решение самостоятельно кэширует (потому, что знает что у нас ограничение в 128 Мб ОЗУ, и системные алгоритмы кеширования будут работать хуже чем своя стратегия кеширования с учетом алгоритма сортировки), то в данном случае такое решение сольет решению которое отдает кеширование на откуп системе - у системы кеш будет во всё системное ОЗУ (4 Гб? 8? 16?) а собственный кеш программы будет всего 128. Даже если это умные 128, он не побьют на файле в 4Гб системный кэш который просто засосёт весь файл целиком в ОЗУ.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #91 : Декабрь 03, 2016, 03:52:24 pm »
Для конкретной программы? Тогда - да.
Да, для конкретной программы. Или группы программ, как угодно. Можно сказать что вот эта и эта программа делят общую делянку и им на всех 32Мб ОЗУ, вот столько ядер и процессорного времени, а вот этой программе отдельно 256 Мб ОЗУ. Ну и так далее. Ресурсы можно резать тонкими ломтиками и раздавать программам почти как угодно.
Y = λf.(λx.f (x x)) (λx.f (x x))

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #92 : Декабрь 03, 2016, 04:06:36 pm »
Ещё замечание 4 минуты да и 1 минута - это очень мало. Такое ощущение, что у тебя весь файл поместился в ОЗУ (в дисковый кэш системы).
Насколько можно судить, решения считывают огригинальный файл один раз, а делается это быстро, но есть, конечно, и временные файлы, это может сказываться.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #93 : Декабрь 03, 2016, 04:14:29 pm »
Ещё замечание 4 минуты да и 1 минута - это очень мало. Такое ощущение, что у тебя весь файл поместился в ОЗУ (в дисковый кэш системы).
Насколько можно судить, решения считывают огригинальный файл один раз, а делается это быстро, но есть, конечно, и временные файлы, это может сказываться.
Ну да. Считали, сделали копию, система радостно копию всосала в кеш, а дальше идет уже просто сортировка в памяти, если файловый кеш никак не ограничен.

С ограничениями что у меня на десктопе что на серваке например comdov'овское решение файл размером в 1Гб жевало поряда 220 секунд, а файл в 4Гб обрабатывался за 900+ секунд.
Y = λf.(λx.f (x x)) (λx.f (x x))

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #94 : Декабрь 03, 2016, 04:45:15 pm »
Как Вы это ограничение выставляли?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #95 : Декабрь 03, 2016, 04:57:35 pm »
Как Вы это ограничение выставляли?
Пока что через cgroups. Потом еще более сурово ограничу.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #96 : Декабрь 03, 2016, 05:18:05 pm »
Поспели первые результаты прогона на сервере. См. гитхаб ( https://github.com/valexey/bigbench ).
Кроме картинки теперь есть файл под названием results.txt - лежит рядом с картинкой. Там такое:
Цитировать
comdiv hardcore:
128 29.29
256 56.55
512 110.70
1024 217.70
2048 453.05
4096 938.64
elena files_merge:
128 14.08
256 39.65
512 101.85
1024 256.89
2048 629.84
4096 1586.56
elena linux_mmap:
128 5.70
256 13.92
512 37.19
1024 87.95
2048 180.32
4096 404.89
vlad fast:
128 5.59
256 11.17
512 24.98
1024 52.99
2048 131.98
4096 345.50
vlad simple:
128 8.82
256 19.48
512 60.77
1024 177.82
2048 604.67
4096 2117.47
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #97 : Декабрь 03, 2016, 05:20:13 pm »
Сейчас запущу в пять раз более длительный тест. Чтобы оценить разброс.
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #98 : Декабрь 03, 2016, 08:50:46 pm »
Есть 32битный xds (но там надо победить ncurses либу - компилятор требует для работы какую-то древнющую версию).
Попробовал сегодня, там надо просто удалить -lncurses из xc.tem - он его лепит ко всем программам.

Хотел написать переносимо, но оказывется в стандарте ISO нет функции удаления файла.  :o

А еще между делом выяснилось, что FAT32 может быть в 2-4раза быстрее, чем NTFS.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #99 : Декабрь 03, 2016, 08:56:35 pm »
Есть 32битный xds (но там надо победить ncurses либу - компилятор требует для работы какую-то древнющую версию).
Попробовал сегодня, там надо просто удалить -lncurses из xc.tem - он его лепит ко всем программам.
Дык у меня сам компилятор не запускается - ему тоже ncurses нужен...

Хотел написать переносимо, но оказывется в стандарте ISO нет функции удаления файла.  :o

А еще между делом выяснилось, что FAT32 может быть в 2-4раза быстрее, чем NTFS.
Ну, файлы не обязательно удалять. Т,е. после себя все временные файлы можно оставить, тестирующая система их убьет. Ну а в ходе работы имеющиеся файлы (кроме input'a, который read only по сути своей) можно же переиспользовать.

Т.е. если в ходе работы программа создала output (размером с input) и ещё два временных файла с input размером - это норм. Ничего удалять не надо.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #100 : Декабрь 03, 2016, 09:20:27 pm »
Запустил тестироваться уже по нормальному - то есть каждое решение для каждого размера входного файла будет запущено 5 раз. Сколько это времени суммарно займет - фиг знает. Полагаю несколько часов.
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #101 : Декабрь 03, 2016, 10:06:35 pm »
Дык у меня сам компилятор не запускается - ему тоже ncurses нужен...
Ктороый, xc или xm? У меня xc нормально запускается, а xm падает что-то там про COROUNITES пишет.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #102 : Декабрь 03, 2016, 10:11:58 pm »
Дык у меня сам компилятор не запускается - ему тоже ncurses нужен...
Ктороый, xc или xm? У меня xc нормально запускается, а xm падает что-то там про COROUNITES пишет.

$ ./xc
./xc: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
$ ./xm
#RTS: Coroutines initialization fault 3...

Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #103 : Декабрь 03, 2016, 11:46:55 pm »
Теперь тестирование одного решения занимает порядка 2-3 часов. Сейчас у нас 5 различных решений. Короче, серверу есть чем заняться в ближайшие 10-15 часов.
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #104 : Декабрь 04, 2016, 07:19:34 am »
$ ./xc
./xc: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
$ ./xm
#RTS: Coroutines initialization fault 3...
Ага, у меня 32-битная система. Видимо ncurses стоит по умолчанию, или  mc подтянул.
Можно предыдущую версию XDS (2.51) попробовать, там компилятор статически слинкован.