Несколько серверов DAX на одной машине



Недавно обсуждали вопрос, актуальный для хостинговых компаний (предоставляющих продукт как сервис) в первую очередь, - поддерживаются ли компанией - вендором несколько серверов приложений DAX 4 на одном физическом сервере.


Минимальные требования – 1 процессор и 512 Мб оперативной памяти. На этом можно запуститься  и, возможно, что-то тестировать.


Понятно, что в реальном окружении этого явно недостаточно, физический сервер должен быть мощнее:


·         Физический сервер должен содержать не более N экземляров сервера DAX, где N есть число процессоров на физическом сервере.


·         Данный физический сервер должен иметь как минимум 2Гб оперативной памяти, каждый дополнительный сервер DAX, запущенный на этом сервере, требует дополнительно 512Мб памяти. Если же загрузка велика и код сильно модифицирован, то может понадобиться 1Гб для каждого экземпляра сервера DAX.


·         Если используются несколько серверов DAX, рекомендуется использовать привязку к процессорам (processor affinity) для увеличения производительности серверов DAX.


·         Комфортным для сервера DAX является 2 процессора для экземпляра сервера, но и с 1 процессором он работает прекрасно.


Детальный подбор оборудования лучше всего производить с помощью команды TPAG (Technical Presales Advisory Group), внутренней команды Microsoft по тестированию и подбору оборудования. Этот сервис доступен партнерам.

Comments (4)
  1. По какой процедуре этот сервис доступен партнерам? Через локального PAM? И почем?

  2. TPAG доступен партнерам как через локального PAM, так и напрямую.

    Сервис бесплатен для новых продаж. Для уже существующих инсталляций данный сервис является платным.

    Детали можно узнать у PAM.

  3. Igor says:

    А как установить этот processor affinity ? Через task manager или есть какой-то параметр

  4. Да, через Диспетчер задач (Task Manager).

    Вы можете использовать следующий ресурс для информации

    http://softwareforums.intel.com/ids/board/message?board.id=42&message.id=401  

    Один из ответов инженеров Intel приведен ниже, он дан в оригинале, на английском:

    “Q. I was wondering if you knew of tools or a way to assign an application to a logical CPU?  We want to optimize a new feature with the Intel(R) Xeon(TM) processor and hyper-threaded processors where logical CPU utilization is monitored.

    A.  We are not certain of your specific situation, so we are going to give several answers to your question.

    If you are trying to specify which processor a process (application) should run on from a system administrator point of view, where you do not have the ability to modify the application itself, and you are using a Microsoft* OS, you can simply use Windows* Task Manager.  When the process is running press Ctrl+Shift+ESC, click the Processes tab, select the name of the process, right click, and choose "Set Affinity…".  From there you can specify which processor you want the entire application to run on.  I also know that there is a Microsoft* Windows* 2000 DataCenter Server version of their OS which has sophisticated controls over which process and threads run on which processors.

    Programmatically, if you are using a Microsoft* OS, the Microsoft* Platform SDK contains APIs that allow developers to control which processor their process or threads will run on.  The SetProcessAffinityMask http://msdn.microsoft.com/library/en-us/dllproc/base/setprocessaffinitymask.asp function is used to force all threads of the process to execute on the designated processor.  The SetThreadAffinityMask http://msdn.microsoft.com/library/en-us/dllproc/base/setthreadaffinitymask.asp function forces a particular thread to only be scheduled on a specific processor.  You will need to use GetProcessAffinityMask http://msdn.microsoft.com/library/en-us/dllproc/base/getprocessaffinitymask.asp to determine which processors are available to your process, since as we mentioned earlier, the system administrator can limit which processors are available to the process.

    There is also an Platform SDK API called SetThreadIdealProcessor http://msdn.microsoft.com/library/en-us/dllproc/base/setthreadidealprocessor.asp which doesn’t force the thread to run on the specific processor, but rather strongly suggests it to the OS.  The OS can still run that thread on other processors, but would attempt when possible to run it on the designated processor.

    You can use the GetSystemInfo http://msdn.microsoft.com/library/en-us/sysinfo/base/getsysteminfo.asp function to determine the number of processors on the computer.   However to determine which processors logical processors are associated with which physical processor, we recommend the Intel(R) Developer Services article "Detecting Support for Hyper-Threading Technology Enabled Processors" available at: http://www.intel.com/cd/ids/developer/asmo-na/eng/technologies/threading/hyperthreading/20416.htm

    That article includes sample code that determines how many processors are on the system, whether they are HT enabled, and which logical processors belong to which physical processor.  Also you will notice that to accomplish this, the sample uses SetProcessAffinityMask.”

Comments are closed.

Skip to main content