Живая связь двух скриптов **BAS**



  • @Fox нашел как нагрузку на проц уменьшить? 8х2.5 85-90% хавает в 80 потоков



  • @artihorror said in Живая связь двух скриптов **BAS**:

    @Fox нашел как нагрузку на проц уменьшить? 8х2.5 85-90% хавает в 80 потоков

    8х2.5 Это в смысле восьмиядерный проц с частотой 2.5 гигагерца?

    Нагрузку на проц очень хорошо снижает пропуск кадров, @support хотел как то сделать надстройку, чтобы регулировать для каждого потока пропуск кадров. Но пока её нет, я реализовал через два скрипта. Один парсит нужную информацию с пропуском кадров 1 и записывает в базу. А второй скрипт с огромным пропуском кадров 2000 (рендерит один кадр в 30 секунд) применяет полученную информацию из базы. Вообщем пока идёт тест на моей машине, завтра-послезавтра закину на сервер, тогда смогу сказать, есть польза от этого или нет :).

    Думаю ещё освобождать промежуточные переменные, например получив отпечаток в переменную FINGERPRINT я его применяю, но больше, эту переменную ни как не использую. А в оперативке она висит у каждого потока.
    Или после get-запроса содержание ответа получаю в переменную SAVED_CONTENT из которой получаю нужную информацию через регулярку, либо xpath. Но сама переменная тоже висит в оперативке.

    Возможно конечно я не прав, и BAS как то выгружает не используемые переменные из оперативки на винт например..



  • @Fox мне тоже интересно, для оптимизации можно ли чистить\удалять переменные? есть ли в этом смысл?



  • @sitiros said in Живая связь двух скриптов **BAS**:

    @Fox мне тоже интересно, для оптимизации можно ли чистить\удалять переменные? есть ли в этом смысл?

    если большие объемы инфы в переменке фигурируют то лучше высвобождать их, сам прикинь зачем ненужный объем памяти в ходе проекта таскать с собой, в одну накинул в другую накинул вот и оперативка кончилась, один поток забил раму например в 100 мб там второй поток еще 100 мб и т.д каждый себе кусок отъел, а если высбободил у первого потока второму эта часть достанется и т.д я как понимаю потоки в BASе работают асинхронно вне очереди. Я сильно особо не шарю в многопоточности, хз.

    копипаст с зиновского мана
    Нужно учесть один нюанс: расход процессора можно немного превысить, т.е. если у вас он загружен на 100% увеличение потоков на 10-15% практически ничего не изменит, а главное, не ухудшит. Просто потоки будут ждать некоторое время освобождения этих ресурсов.
    Оперативная память, наоборот, не должна забиваться полностью, всегда лучше оставлять 10-30%. Если она кончится, это может привести к падению.

    ну это доводы, нужно точно узнавать у супарта, МБ BAS за нас все оптимизирует.



  • Уфф, 4 утра, а я так и не разобрался. Хотел поставить все точки над И, но не вышло. Вот АРХИВ.
    В нём файл mails.txt, который надо в корень диска C:\ положить.
    И три тестовых проекта, каждый из которых запускает 200 потоков, читает файл mails.txt в переменную.

    Первый проект сперва читает файл в переменную, потом обнуляет, присваивая переменной значение 0.

    Второй сперва читает файл в переменную, потом удаляет командой delete VAR_FILE_CONTENT;

    А третий читает >> обнуляет >> читает >> удаляет.

    Я раз 10 запускал скрипты и мониторил загруженность оперативки. Дак каждый раз результат был разный.. То помогает обнуление освобождая память, то наоборот немного увеличивало занимаемый объём. С удалением точно так же. То освобождалась память, то нет..

    Может я не корректно провожу тест?



  • This post is deleted!


  • @santilo А смысл? :D
    Цель изначально была - выяснить, освобождает ли оперативку обнуление или удаление больших переменных.
    Стоит ли вообще для увеличения производительности скриптов, затирать после использования переменные.



  • @Fox said in Живая связь двух скриптов **BAS**:

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

    Да я уже это понял, что мой пост был не к месту, просто не вник в суть этой темы)



  • @Fox said in Живая связь двух скриптов **BAS**:

    @artihorror said in Живая связь двух скриптов **BAS**:

    @Fox 8х2.5 Это в смысле восьмиядерный проц с частотой 2.5 гигагерца?

    именно такой.

    по обнулению переменных имеет смысл только если ложишь в нее что нибудь весом в несколько десятков мб. Пришлось раз обрабатывать басом текстовик весом 8гб, озу забивалась моментально и только обнуление спасало. А мелочь в сотню кб, даже если все 300 потоков не особо влияет. отпечаток весит 160 кб в среднем, выгружая его освободишь 45 мб рамы в 300 потоков.
    Интересно как снизить нагрузку на процессор, какие действия нагружают его. Выше писали что обращение к файловой системе сильно влияет на процессор - отчасти так, но влияние мизер. Храню куки в текстовиках , при обращении нагрузка потока на проц с 0.1% повышается до 0.2% и то на мгновение. Но при загрузке страниц может нагрузить до 7-12% с пропуском кадров в 500. Фича по отключению скриптов и css, запрет загрузки картинок и еще пара плюшек как у зенки (не помню что еще там отключается у браузера) неплохо бы так улучшило производительность

    0_1497605755611_Corel.png
    80 потоков, запускаются с интервалом в 3 сек дабы распределить нагрузку. пики в момент начала загрузки страниц 40-45 потоков. при работе на странице нагрузка падает до 40-50%, при следующей загрузке страницы процессор снова потеет.



  • @artihorror

    Фича по отключению скриптов и css, запрет загрузки картинок и еще пара плюшек как у зенки (не помню что еще там отключается у браузера) неплохо бы так улучшило производительность

    Дак в BAS'e это тоже есть. Экшен запретить запрос, и всё что угодно в нём запрещаешь, хочешь картинки, хочешь звуки, хочешь скрипты..

    0_1497605495775_forum17.png



  • @Fox с картинками можно, но вылавливать css и скрипты на каждой странице.. В зенке все это отключается парой кнопок, а тут экшенов на весь экран и то не все вллезли) почему бы не позаимстовать более удобный интсрумент



  • @Fox п.с. в "неудачных\успешных выполнений" можно поставить -1 и будет бесконечно работать\фейлится



  • @artihorror На счёт -1 спасибо, не знал. А на счёт скриптов и css, попробуй *.css и *.js .



  • @Fox работает, но слишком много экшенов)0) погоняю отпишу о том как повлияло.0_1497608328540_Screenshot 2017-06-16 10.17.42.png



  • @Fox танцы с бубном вокруг запретов помогли снизить нагрузку на процессор до 3-3.7% вместо 7-12%
    Для блокировки всех изображений хватает *img;
    Из минусов: от копания в коде страницы убежать не удалось. *сss, *js блочат все под чистую и для отображения капч или важных всплывающих окон приходится искать и разрешать их запросы. Только для рекапчи их 4 - а это 4 экшена, в проекте появляются лишние действия и функции.



  • @artihorror скоро будет возможность запрета нескодьких запросов в одном экшкне. На данный момент жля удобства читаемости, перекиньте все в отдельную функцию



  • @artihorror said in Живая связь двух скриптов **BAS**:

    @Fox said in Живая связь двух скриптов **BAS**:

    @artihorror said in Живая связь двух скриптов **BAS**:

    @Fox 8х2.5 Это в смысле восьмиядерный проц с частотой 2.5 гигагерца?

    именно такой.

    по обнулению переменных имеет смысл только если ложишь в нее что нибудь весом в несколько десятков мб. Пришлось раз обрабатывать басом текстовик весом 8гб, озу забивалась моментально и только обнуление спасало. А мелочь в сотню кб, даже если все 300 потоков не особо влияет. отпечаток весит 160 кб в среднем, выгружая его освободишь 45 мб рамы в 300 потоков.
    Интересно как снизить нагрузку на процессор, какие действия нагружают его. Выше писали что обращение к файловой системе сильно влияет на процессор - отчасти так, но влияние мизер. Храню куки в текстовиках , при обращении нагрузка потока на проц с 0.1% повышается до 0.2% и то на мгновение. Но при загрузке страниц может нагрузить до 7-12% с пропуском кадров в 500. Фича по отключению скриптов и css, запрет загрузки картинок и еще пара плюшек как у зенки (не помню что еще там отключается у браузера) неплохо бы так улучшило производительность

    0_1497605755611_Corel.png
    80 потоков, запускаются с интервалом в 3 сек дабы распределить нагрузку. пики в момент начала загрузки страниц 40-45 потоков. при работе на странице нагрузка падает до 40-50%, при следующей загрузке страницы процессор снова потеет.

    на проц более всего влияет вычислительные операции, регулярки, обшение между переменными, обработка кода в браузере, скриптов и т.п,в идеале нужно сводить на минимум операции в шабе иногда одна грамотно построяная операция, заменит 10 лишних движений.
    Я уже давно отказался от комбайнов, клепаю по минимуму но много разных шаблонов ИМХО их и править удобнее.



  • @Zenodrot said in Живая связь двух скриптов **BAS**:

    перации в шабе иногда одна грамотно построяная операция, заменит 10 лишних движений.
    Я уже давно отказался от комбайнов, клепаю по минимуму но много разных шаблонов ИМХО их и править удобнее.

    самая большая нагрузка на проц во время открытия браузера, поэтому рекомендуется при большом количестве потоков ставить паузы между запусками.
    Например у меня на виртуалке с 2*2ггц одновременный запуск 7 потоков вешает машину, с паузой в 1 секунду между стартом открытия браузеров - 30-40 одновременно работающих потоков, дальше уже упор в память.

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

    Проблему решил, что в ресурс ложиться только колонка с моими id`шниками,
    в скрипте я получаю этот id через парсить строку, вторым параметром там же получаю настоящий id в базе, потом просто через получить запись с фильтром по моему id получаю актуальные данные



  • @DrPrime said in Живая связь двух скриптов **BAS**:

    что хорошо, это то, что в памяти считывание и запись во много в раз быстрее чем с ХДД
    что есть хороший прирост к производительности, главное ее сильно объемами инфы не грузить ну тут уже подгонять все под железо ибо кто то на 2 гигах сидит а кто то на 64 +



  • @Fox @Zenodrot @DrPrime какие запросы нужно разрешить для корректной работы рекапчи? пока что так, но с ней появились проблемы. 0_1497631519980_2017-06-16_194332.png
    0_1497631565038_Screenshot 2017-06-16 16.36.09.png
    все ошибки связаны с капчей, остальное отрабатывает на ура. производительность просто каеф, хоть все 300 пускай:3


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.