От чего зависит скорость в скрипте на запросах?

  • Добрый вечер, имею такую конфигурацию на своём пк:
    Windows 10
    AMD Ryzen 5 2600
    Samsung SSD 870 EVO 1 TB
    RAM 16 GB Kingston DDR4 2666

    C скриптом справляется за 1.92 минуты.
    Windows Server 2016
    VPS:
    Intel Xeon E5-2670 v2 2.5GHz(20 ядер)
    RAM 12 GB ???
    Nvme

    Справляется с той же задачей уже за 6+ минут.

    Вся задача это вызов потока через bas-remote-node, в потоке вызывается 25 асинхронных функций и ожидается их выполнение. В каждой такой функции происходит около 70 запросов, просто обработка информации ничего больше. Но почему настолько существенная разница?

    Пробовал этот же скрипт на физическом сервере на:
    Windows Server 2019
    AMD Ryzen 7 3800X
    RAM 16 GB DDR4 2666
    SSD 240 GB

    Время здесь было среднем 3 минуты, не смотря на то что это чистый Windows Server 2019, который мощнее моего Ryzen 5 2600, но скорость выходит меньше.

    Возможно вы скажете что это проблема интернета?
    На VPS скорость: 43 мбпс скачать/45 мбпс загрузка.
    На моём ПК: 39 мбпс скачать/38 мбпс загрузка.
    Скорость на физ.сервере: 250 мбпс скачать/600+ мбпс загрузка.

    Но напомню, это только при одном таком запуске. Если запустить таких потоков 10 тогда мы видим следующее:

    Скорость на физ.сервере улетает в космос 30-34 минуты на обработку одного потока при том что по железу он не капли не упирается в потолок, 4% нагрузки ЦПУ, 40-45% нагрузки ОЗУ.

    На моём ПК скорость так же улетает в космос 22-24 минуты. При том что все потоки должны обрабатываться одновременно, не должно быть такой разницы.

    По логике баса если на обработку 1 функции(в потоке) ходит 95 секунд, то 25 потоков одновременно должно так обработать ну допустим за 110 секунд, что и есть правдой при условии что у нас такой поток 1, но если у нас к примеру потоков больше то и скорость общая падает так же.

    Так же использовал вот это на физическом сервере перед тестами: https://community.bablosoft.com/topic/17458/оптимизация-ос-под-многопоточность

    Вызов самих функций происходит через .runFunction .

    Возможно это проблема bas-remote-node я подумал. Поэтому скомпилировал свой скрипт в обычное приложение. Время обработки 1 потока:

    Физ.Сервер: 2:46
    Мой пк: 2:04
    Разница существенная как мы видим.

    Я попробую удалить полностью всё логирование, возможно слишком много логов - результата нету. Мы выиграли только 5 секунд на физ.сервере. Заранее хочу сказать что скрипт практически не обращается к диску, нагрузка 0.1/mbs с логами.

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