Configuring private queue threads
AR System Server divides the work into queues and threads. Queues are a pool of common threads. A thread is a single compute unit used to complete a task. The AR Server routes the work to a queue and thread. The thread runs the process and the result is sent back to the client which requested the work.
This topic contains information on:
Understanding Queues
Queues are divided based on their operations. Some common queues are Admin, Full Text Indexing, Escalations, Fast, and List. The Administrator cannot customize these queues. You can customize some queues for processes such as Normalization and Reconciliation. Any customizable queue is known as a Private Queue because it is used only by one specific process.
Most user traffic is processed in Fast and List queues. If a queue of 0 or NULL is used, then the user traffic will be routed to a queue based on the call being executed.
The following list shows the benefits of queues based on how you configure them:
- A queue could be dedicated to a critical resource, like Email Engine on the server processing emails.
- A queue can be used to limit interference to user facing queues.
- Adding queues allows your system to process more work in parallel. Decreasing queues allows your system to consume less resources.
Understanding Threads
Threads are considered workers of queues. Each thread can execute one request at a time. AR Server allows administrators to set the number of threads available to each queue by providing a minimum and a maximum value.
The minimum value of threads are created on system startup. AR Server does not allow queues less than the minimum value set by the system.
Depending on the work, more threads are created and work is assigned to the threads up to the maximum value. Once the maximum value is reached, additional threads are not created, and the work is assigned to the first thread in another queue.
The process of assigning work to individual queues and threads is called Scheduling. Scheduling is done via the round-robin method to available threads.
Configuring AR System RPC Queues and Threads is not a requirement for all systems and must not impact daily operations. This is a performance tuning exercise that should provide no functional impact on any system. Depending on the goals of the system, queues and threads allows administrators to either limit (throttle) certain operations or allow operations to be executed in parallel. More queues with higher thread counts cause more parallel operations to execute at the same time. Fewer queues with lower thread counts will cause fewer queries to execute at the same time.
You must make changes for both the AR Server and the Client for any changes with queues and threads to be effective. Making a change in either the AR Server or the Client (and not both) makes any performance issues worse. Use the tables below to better understand both default Queues (ones that you cant change and should always have) and suggested Queues for processes that might be different based on your environment.
Configuring New Private Queues for AR Server
In order to configure a new Private Queue for the AR Server, the AR System Administrator can either add, remove, or modify the Private-RPC-Socket parameter in the Centralized Configuration form.
The syntax for this configuration is:
Example:
Considerations for Queues and Threads
You must always consider what a queue will be used for. Sometimes, you do not have control on some threads like Fast and List threads about the work they will process, as users and their interactions largely determines what work is sent to the threads for processing. Some things like Reconciliation queue are largely predictable since most reconciliation jobs are started at specific times.
AR System Default Queues
The following tables list tuning methods for several workload components.
Queue Number | Name | Description |
---|---|---|
390600 | Admin | Single threaded Queue that is not defined in ar.conf file. This queue can not be modified. |
390601 | Alert | Queue used to process Alerts. This queue defined in the ar.conf file. You can only increase or decrease the threads for this pool. |
390602 | FTS Indexing | Queue used to process FTS Indexing requests. This queue is defined in the ar.conf file. You can only increase or decrease the threads for this pool. |
390603 | Escalation | Queue used to process escalations. This queue is defined in the ar.conf file. You can only increase or decrease the threads for this pool. |
390620 | Fast | The FAST queue is responsible for processing requests from clients that do not define a RPC Queue. This queue is defined in the ar.conf file. You can only increase or decrease the threads for this pool. |
390621-390634 | Private | Range of queues numbers that you can assign to any process. |
390635 | List | The LIST queue is responsible for processing request from clients that do not define a RPC Queue. This queue is defined in the ar.conf file. You can only increase or decrease the threads for this pool. |
390636-390669 | Private | Range of queues numbers that you can assign to any process. |
390680-390694 | Private | Range of queues numbers that you can assign to any process. |
Suggested Private Queues
The following table is a compiled list of common settings that are recommended by BMC, although you can assign these numbers to any queue desired.
Queue Number | Name | Description |
---|---|---|
390619 | Flashboards | The Flashboard Server is a single threaded process. You can create a queue to process these queries in the AR Server and assign that queue to the Flashboards server by modifying the ARSystemInstallDirectory/flashboards/server.conf file. For more information, see Configuring BMC Remedy Flashboards. |
390621 | Email Engine | The Email Engine is a multi-threaded process. There is one thread per mailbox. You can create a queue to process these queries in the AR Server and assign that queue to the Email Engine by adding the following setting in the Centralized Configuration form: com.bmc.arsys.emaildaemon.<serverName>.RPC=390681 For more information, see Configuring BMC Remedy Email Engine. |
390622 | App Query Plugin | The AppQuery Plugin is a multi threaded plugin that runs in the AR Shared Java Plugin Server. This plugin has the ability to forward its queries to a private queue. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: REMEDY.ARDBC.APPQUERY.userDefined.Private-RPC-Socket For more information, see the topic AppQuery plug-in configuration. |
390623 | DSO Config Plugin | The DSO Config Plugin is a single threaded plugin that can run multiple times in the AR Shared Java Plugin Server. This plugin has the ability to forward its queries to a private queue. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: DSO.FILTERCONFIGURATION.userDefined.rpcqueue For more information, see the topic DSO Filter Configuration plug-in configuration. |
390626 | Loopback | The Loopback RPC Socket is an internal queue used by plugins and the AR Server when a plugin request routes back to the AR Server for additional queries. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: Plugin-Loopback-RPC-Socket For more information, see the topic Private queues for loopback calls. |
390636 | Business Rules Engine | The Business Rules Engine is a single threaded plugin that is included in BMC Service Level Management. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: BR-RPC-Socket |
390637 | Assignment Engine | The Assignment Engine process is an internal multi-threaded AR System process. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: AE-RPC-Socket |
390638 | DSO | The DSO Server is a multi threaded plugin that facilitates the synchronizing of tickets between two different AR Server Environments. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: DSO-Local-RPC-Socket |
390680 | Approvals | The Approval Server is a multi threaded plugin that runs in the AR Shared Java Plugin Server. This plugin has the ability to forward it's queries to a private queue. This plugin can be configured by adding the following parameter in the Centralized Configuration form for the appropriate AR System Server: |
390681 | AR Normalization | The AR Normalization queue is not a dedicated queue for a specific client, but is rather a shared queue for several CMDB related plugins. This includes the Normalization Engine and the Deprecation plugin. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: |
390693 | CAI Plugin | The Command Automation Interface (CAI) plugin is a multi-threaded plugin that runs in the AR Shared Java Plugin Server. This plugin has the ability to forward its queries to a private queue. You can configure this by modifying the Private Queue # on the CAI:PluginRegistry form. For more information, see the topic Configuring command automation interface. |
390698 | Reconciliation | The Reconciliation Engine is a multi-threaded CMDB Plugin that can be extremely CPU and Database intensive. This plugin has the ability to forward its queries to a private queue. This plugin can be configured by adding or updating the following parameter in the Centralized Configuration form for the appropriate AR System Server: RE-RPC-Socket For more information, see the topic Reconciliation Engine configuration settings. |
390699 | CMDB Normalization | The CMDB Normalization queue is not a dedicated queue for a specific client, but is a shared queue for several CMDB related plugins. This includes the Normalization Engine and the Deprecation plugin. This plugin can be configured by altering the following parameter in the Centralized Configuration form for the appropriate AR System Server: BMC.ARDBC.DEPRECATION.PLUGIN.userDefined.cmdb_rpc_queue |
BMC CMDB thread sizing
BMC CMDB normalization and reconciliation processing are CPU intensive. By default, CMDB processes are executed using fast and list threads. Private queues allow you to restrict how much CPU is used by CMDB processes.
Normal day-to-day CMDB processing should not consume more than 20% of AR System server CPU capacity. The goal is to obtain optimal throughput for CMDB processing while not sacrificing response time for the users who are doing online transactions.
Configure a private queue by setting minimum and maximum thread settings to the number of CPU cores as the starting values. Adjust the thread settings based on the BMC CMDB workload, online workload, and thorough performance testing.
Related Topics