Search This Blog

2012-01-13

Genesys: Old Technology in StatServer


Product: Genesys
Version: v5 - v8

It has been more than 10 years, but Genesys StatServer is still not a multi-threaded application.I always have the impression it is, but just read following post on 2010-12-30 that it is not.

Inspecting CPU utilization, I always see all CPU are being utilize in multi-CPU. I wonder how they write their program to be able to distribute load to different CPU. I understand that for Intel multi-core processor, its HyperThread technology is distributing the load within the CPU itself, so no programming change is require.

However, for single-threaded application, such as StatServer, there must be some API which allows the program to make use of multi-CPU. I must be behind in programming API.

In summary, single-threaded application can't fully utilize multi-CPU machine, regardless of operating system. So in high call volume, many stats, many agents (like many part-timer with high turnaround), many objects (place, place group, virtual queue, queue group, calling list, campaign, etc), high log level environment, StatServer may not able to utilize all CPUs, and either intermittent stop responding (reporting data lost), or crash.

The options to work around these are:
1. Install faster physical CPU (not virtual CPU) per core
2. Stay away from virtual machine to fully utilize raw CPU power
3. Invest in multi-core rather than multi-CPU
4. For Intel processor, overclock BCLK (base frequency), disable CPU Spread Spectrum, PLL voltage, Vcore voltage, etc. This will void the warranty
5. StatServer consider hitting CPU bottleneck when any of the core in the CPU hitting 100% continuously, not average, nor average of 1 mult-core CPU. Most performance monitoring software need custom configuration to show max per core, max per processor, max per process. Many people are looking at average CPU utilization which is totally wrong and assume StatServer not encountering CPU constraint


In demonstrating single-threaded, and multi-threaded application, I borrowed Intel Core i7-3960X (6 core/processor) benchmark, see following

WinZip v15.5 Pro (single-threaded)
7-Zip v0.955 (multi-threaded)
Compression Elapsed Time:
WinZip 3:10 minute
7-Zip 0:32 minute

http://www.tomshardware.com/reviews/sandy-bridge-e-efficiency-core-i7-3960x,3075-4.html

Regardless how big and content of the file being compressed, multi-threaded application will be several times faster than single-threaded

Moreover, on 32-bit OS (such as Windows 32-bit), StatServer must process the data fast, or it will need to allocate more RAM for its variables (link-list, array, etc), and hitting 2 GB/process limit. This is ugly because StatServer will crash instantly, and will affect other modules which it talks to (see CME what module the crashing StatServer is used), e.g. CCA, CCPulse, URS, GIS, WFM.

Reference:
http://solutionsearch.genesyslab.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=25349&sliceId=1&docTypeID=DT_QUESTIONANDANSWER_1_1&dialogID=19570934&stateId=0 0 19568750

No comments: