Я работаю в системе, в которой взаимодействуют три компонента высокого уровня
Клиент (PHP) - Logger (Java) - MainBackend (Java)
Клиент PHP создает новый процесс Linux Logger для каждого полученного запроса. Затем регистратор отправляет сообщение по TCP в MainBackend и начинает регистрировать сообщения, которые он получает от MainBackend. Обратите внимание, что Logger очень легкий и использует очень мало памяти.
Я проверил нагрузку на эту систему, увеличив число пользователей N, обращающихся к системе. Затем я написал версию, в которой Logger был многопоточным, так что для каждого N одновременных пользователей использовался только один процесс, и протестировал нагрузочную версию многопоточной версии.
В результате многопоточная версия была на FAR быстрее, как в во многих раз быстрее определенного N. Мой вопрос - почему?
Если для запуска каждого процесса Linux требуется определенное время T, почему я не вижу постоянной разницы (T2 - T1) между двумя графиками?
Является ли Linux просто менее эффективным в планировании процессов, чем Java в планировании потоков?
РЕДАКТИРОВАТЬ: Важным моментом, который я не упомянул, является то, что все время было выполнено из Logger, поэтому время запуска процесса / виртуальной машины не влияет на результаты - я провел эксперимент таким образом, чтобы как можно меньше переменных.