Запуск одной и той же программы с 40 разными «идентичностями». работает 40 экземпляров программы. Плюсы и минусы?

0

Мы столкнулись с определенным решением по разработке программ, которое нам нужно know-

  1. Если и существуют ли различия в производительности

    а. запуск нескольких (скажем, n = 40) экземпляров программы (скажем, n = 40); а также,

    б. Изменение исходного кода программы достаточно, чтобы изменить его имя (например, программа называется XXXXX, и мы меняем исходный код и перекомпилируем и установим XXXX1, XXXX2, XXXX3.... до XXXX40) и запустите все они сразу.

  2. Если да, то каковы эти различия?

  • 0
    А? (И какое это имеет отношение к fork() ?)
  • 0
    Потому что те, кто разветвляет программу и запускает разветвленную вместе с оригиналом, может знать. (Это то, что я думал. Вы свободны отличаться. Предоставление повода для различия может помочь мне выучить несколько вещей. Заранее спасибо. :) Ура!)
Показать ещё 1 комментарий
Теги:
fork
multiple-instances

2 ответа

2

Одно из отличий заключается в том, что если вы запускаете один и тот же двоичный код несколько раз, операционная система должна будет загружать только одну копию в память, и каждый исполняемый экземпляр будет совместно использовать части, доступные только для чтения (код, ресурсы и т.д.). Даже записываемые части будут доступны до тех пор, пока они на самом деле не будут написаны благодаря Copy on Write.

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

Являются ли эти эффекты достаточно значительными, чтобы беспокоиться, будут зависеть от особенностей вашей ситуации.

  • 0
    Дело в том, что для управления указанной программой нам нужно использовать протокол DBus. И насколько я знаю, если вы используете Dbus, вы можете иметь только один экземпляр программы. Повлияет ли изменение названия программы так, как вы показали, на мои цели (поэтому мне не нужно возиться с исходным кодом)? Заранее спасибо.
0

Только вы знаете, что вы подразумеваете под "эффективностью", так что сделайте свой собственный бенчмаркинг.

Вам не нужно менять исходный код программы, чтобы изменить ее имя. Просто:

 $ cp myprogram myprogram2

Или, сделайте каждый элемент одним и тем же файлом:

 $ ln myprogram2 myprogram

Я ожидал, что Linux сделает что-то умное, если вы запустили myprogram и myprogram2 где оба являются ссылками на один и тот же файл. Однако всего за 40 одновременных случаев я был бы удивлен, если бы эффект был поддающимся измерению.

Однако я не вижу преимуществ в том, чтобы иметь разные имена. Запуск нескольких экземпляров одного и того же исполняемого файла - это обычная вещь.

  • 0
    Дело в том, что для управления указанной программой нам нужно использовать протокол DBus. И насколько я знаю, если вы используете Dbus, вы можете иметь только один экземпляр программы. Повлияет ли изменение названия программы так, как вы показали, на мои цели (поэтому мне не нужно возиться с исходным кодом)? Заранее спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню