NCP performance tuning on Open Enterprise Server Linux.

  • 7004888
  • 19-Nov-2009
  • 05-May-2016

Environment

Novell Open Enterprise Server 2 (OES 2) Linux
Novell Open Enterprise Server 11 (OES 11) Linux
Novell Open Enterprise Server 2015 (OES 2015) Linux

Situation

Inappropriate settings, or no server-side NCP tuning at all, may introduce unresponsive server behavior, high server utilization scenario's etc, which is experienced by end-users as a 'slow network', long delays when opening files or documents from the server, and reason for end-user frustration.

See section 3.4 Configuring Global NCP Server Parameters on the documentation website for a list of global NCP parameters that can be used to customize NCP Server for a given server.

How the NCP cache should be configured for best performance currently does not provide a lot of detail on how these figures affect the server's NCP memory requirements.

The formula provided below should help build better understanding which values to use, how the figures affect memory consumption and how optimal NCP cache values can best be estimated.

Determining optimum values remains a difficult thing as it depends on for example:
  • available RAM size
  • file system data (number of files and folders that are present)
  • what you exactly want to cache
With this in mind, please understand there is no one-size-fits-all setting here that will provide optimum performance for all environments.

Tuning also means continuous measuring, and measuring needs to be performed on an ongoing basis. Especially user data continuously grows and is continuously subject to change. Measuring and reviewing existing parameters at times will inform the administrator of possible bottlenecks

As example, a machine with reasonable hardware specifications and 4GB of RAM is used, which will act as a NCS cluster node, and will on average host approximately 5 to 6 cluster volume resources.

Resolution

By default, each NCP file cache entry takes approx. (216+SizeOf(FileName)) in bytes.
By default, each NCP folder cache entry takes approx. (216+SizeOf(FolderName)) in bytes.

Default memory allocations are based on the assumption that the average filename has a length of approx ~84 bytes.
It is however important to remember the calculation of the file or folder name cache needs to include the mount location of the volume, which usually starts at '/media/nss/<volume_name>/'


In real life environments however the file length will more closely match the ~300-400 byte range like '/media/nss/<volume_name>/Dir1/.../DirN' which require the default settings to be revised.

Back to the example :
Let's assume the following NCP settings are currently configured:

MAXIMUM_CACHED_SUBDIRECTORIES_PER_VOLUME=200000
MAXIMUM_CACHED_FILES_PER_VOLUME=100000

Lets assume that the average value of SizeOf(FolderName),  the complete path, i.e. /media/nss/<volume_name>/Dir1/../DirN is ~134 bytes, adding the required 216 bytes, this would result in a memory requirement of 350 bytes per cached sub-directory.
Caching 200.000 sub directories would allow NCP to consume 70 MB of memory in this example

Lets assume that the average value of SizeOf(FileName), the complete path, i.e. /media/nss/<volume_name>/Dir1/../File is ~184 bytes, adding the required 216 bytes, than this would result in a memory quirement of 400 bytes for each cached file.
Caching 100.000 files would allow NCP to consume 40 MB of memory in this example

In summary - if the above limits would apply, the total memory requirement on the server for the above settings would be approximately 110 MB per(!) volume for NCP alone.


Conclusion
As the cluster node could be hosting 5 to 6 volumes at times, the total NCP DirCache could consume between ~600-700MB on this cluster node on average.


The NCP 'set' parameters can either be set in the NCP Console utility NCPCON, or directly from the command line.
For example:
  1. type ncpcon and on the ncpcon command line type set MAXIMUM_CACHED_SUBDIRECTORIES_PER_VOLUME=<value>
  2. In a terminal window type ncpcon set MAXIMUM_CACHED_SUBDIRECTORIES_PER_VOLUME=<value>

Additional Information

Being able to calculate NCP memory requirements on the server, it becomes possible to better define server requirements and effectively size the server hardware for it's tasks.

In case of clustered environments, this will provide better guidelines for an effective fail-over strategy for volume resources in case not all servers have the same hardware specifications, or when servers are already configured for other tasks etc

In addition to these NCP tuning parameters, please review TID 7004848 regarding the usage and configuration of the FIRST_WATCHDOG_PACKET NCP parameter on Open Enterprise Server 2 (OES 2) Linux.