--- layout: docs page_title: Install Nomad as a Windows service description: |- Learn how to run Nomad as a Windows service. Register Nomad with the Windows Service Control Manager. Configure Nomad to log to file, and increase the non-interactive desktop heap size. --- # Install Nomad as a Windows service Nomad can be run as a native Windows service. In order to do this, you will need to register the Nomad application with the Windows Service Control Manager using [`sc.exe`], configure Nomad to log to a file, and then start the Nomad service. ~> **Note:** These steps should be run in a PowerShell session with Administrator capabilities. ## Register Nomad with Windows [Download] the Nomad binary for your architecture. Use the [`sc.exe`] command to create a Service named "Nomad". The binPath argument should include the fully qualified path to the Nomad executable and any arguments to the nomad command: agent, -config, etc. ```plaintext sc.exe create "Nomad" binPath="«full path to nomad.exe» agent -config=«path to config file or directory»" start= auto [SC] CreateService SUCCESS ``` If you receive a success message, your service is registered with the service manager. If you get an error, please verify the path to the binary and check the arguments, by running the contents of `binPath` directly in a PowerShell session and observing the results. ## Configure Nomad to log to file Because Windows services run non-interactively and Nomad does not log to the Windows Event Viewer, you will need to configure file-based logging in Nomad. To do this, set the [`log_file`][logging] argument in your Nomad configuration file or in the binPath argument of the [`sc.exe`] command used to register the service. ## Start the Nomad service You have two ways to start the service. - Go to the Windows Service Manager, and look for **Nomad** in the service name column. Click the _Start_ button to start the service. - Using the [`sc.exe`] command: ```plaintext sc.exe start "Nomad" SERVICE_NAME: Nomad TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 8008 FLAGS : ``` The service automatically starts up during/after boot, so you don't need to launch Nomad from the command-line again. ## Increase the non-interactive desktop heap size If you run Nomad as a Windows service and you intend to run many allocations, such as more than 50, you may encounter issues with Windows terminating Nomad plugin processes with errors such as `exit status 0xc0000142` appearing in the logs. This is due to Nomad's inability to spawn more concurrent processes, and you may fix this by manipulating the value of `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems` Windows registry key. This key has a `Windows` value which in turn has a `SharedSection` parameter that accepts a value of three comma-separated integers, for example, `1024,20480,768`. The first integer indicates the maximum size of the system-wide heap, the second is the size of each desktop heap, and the third is the size of the desktop heap that is associated with a noninteractive Windows instance. All values are in kilobytes. For large Windows nodes that run large numbers of allocations, we recommend setting the final integer value to 2048 or 4096 kB. Remember that any registry change requires restarting Windows, a restart of Nomad service is not sufficient. [`sc.exe`]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682107(v=vs.85).aspx [download]: /nomad/downloads [logging]: /nomad/docs/configuration#log_file