Anuket Project

dcpmm plugin tests:

Test Environment details:

  • Bare Metal: Fedora release 27
  • Kernel version: 4.18.8-100.fc27.x86_64
  • Intel Optane DC Persistent Memory available in the system.

Repo/branch used:

Test precondition:

  • Enable dcpmm plugin in Collectd config.

Pre-installed software/libraries:

  • yum install kmod-libs.x86_64 libuuid.x86_64 libgudev-devel.x86_64 
  • yum install daxctl-devel.x86_64 ndctl-devel.x86_64 libipmctl-devel.x86_64 libsafec-devel.x86_64


#Test SummaryStepsExpected ResultTest ResultComments
1Incorrect XML format in config file
  1. Modify the XML format in collectd.conf

<Plugin dcp

Interval 10.0

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll false

</Plugin>

    2. Run collectd

Collectd identifies the incorrect xml format and exits with the following error:

Parse error in file `etc/collectd.conf', line 550 near `<newline>': syntax error, unexpected EOL

yyparse returned error #1

configfile: Cannot read file `etc/collectd.conf'.

Unable to read config file etc/collectd.conf.

Error: Parsing the config file failed

Pass
2

Invalid input parameter value for the plugin

  1. Provide special characters as the input parameter

    <Plugin dcpmm>

    Interval @#$

    CollectHealth false

    CollectPerfMetrics true

    EnableDispatchAll false

    </Plugin>

  2. Run collectd

Collectd identifies the incorrect input value and exits with the following error:

Parse error in file `etc/collectd.conf', line 551 near `<newline>': syntax error, unexpected EOL

yyparse returned error #1

configfile: Cannot read file `etc/collectd.conf'.

Unable to read config file etc/collectd.conf.

Error: Parsing the config file failed!

PassTested for all parameters and obtained expected result for all.
  1. Provide string characters as the input parameter

<Plugin dcpmm>

Interval asd

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll false

</Plugin>

   2. Run collectd

Collectd identifies the incorrect input value and exits with the following error:

[2019-09-06 14:14:45] dcpmm plugin: The `Interval' option requires exactly one numeric argument.

[2019-09-06 14:14:45] dcpmm: Failed to parse configuration parameters

Error: Parsing the config file failed!

PassTested for all parameters and obtained expected result for all.
  1. Provide negative number as the input parameter

<Plugin dcpmm>

Interval -1.0

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll false

</Plugin>

   2. Run collectd

Collectd identifies the incorrect input value and exits with the following error:

[2019-09-06 14:15:09] dcpmm plugin: The numeric argument of the `Interval' option must not be negative.

[2019-09-06 14:15:09] dcpmm: Failed to parse configuration parameters


Error: Parsing the config file failed

PassTested for all parameters and obtained expected result for all.
3Invalid input parameter name for the plugin
  1. Update “CollectPerfMetrics” to an incorrect parameter name.

<Plugin dcpmm>

Interval 1.0

CollectHealth false

CollectPerfMet true

EnableDispatchAll false

</Plugin>

   2. Run collectd

Collectd identifies the incorrect input parameter and exits with the following error:

[2019-09-06 14:36:54] dcpmm: Unkown configuration parameter CollectPerfMet.

[2019-09-06 14:36:54] dcpmm: Failed to parse configuration parameters

Error: Parsing the config file failed!

PassTested for all parameters and obtained expected result for all.
  1. Add a new invalid parameter

<Plugin dcpmm>

Interval 1.0

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll false

NewParameter true

</Plugin>

   2. Run collectd

Collectd identifies the invalid input parameter and exits with the following error:

[2019-09-06 14:36:54] dcpmm: Unkown configuration parameter NewParameter.

[2019-09-06 14:36:54] dcpmm: Failed to parse configuration parameters

Error: Parsing the config file failed!

Pass
4Run dcpmm plugin with default plugin configuration and verify the output using csv plugin
  1. Enable dcpmm and csv plugin in collectd.conf
  2. Run collectd
  • dcpmm plugin collects the memory performance metrics at the default interval (10s) and the output of the csv plugin contains output files with values for memory performance metrics and timestamp at var/lib/collectd/<hostname>/.
  • The csv plugin output should contain dimm-x folders. x should have the value 0 - n, n being the number of DCPMMs available in the system (each DCPMM having a corresponding folder).
  • Each dcpmm-x folder should contain the following csv files:

      buffer-read_hit_ratio-2019-10-31        media-media_read_ops-2019-10-31           media-total_bytes_written-2019-10-31

      buffer-write_hit_ratio-2019-10-31       media-media_write_ops-2019-10-31          media-write_64B_ops_rcvd-2019-10-31

      controller-host_reads-2019-10-31       media-read_64B_ops_rcvd-2019-10-31      timestamp-epoch-2019-10-31

      controller-host_writes-2019-10-31      media-total_bytes_read-2019-10-31           timestamp-tsc_cycles-2019-10-31

  • Each csv file should have a content similar to the following:

      epoch,value

      1572553302.585,395.000000
      1572553312.585,398.000000
      1572553322.585,398.000000
      1572553332.585,399.000000

Pass
5Run dcpmm plugin to collect health information metrics and verify the output using csv plugin
  1. Enable dcpmm with the following configuration and csv plugin in collectd.conf

<Plugin dcpmm>

Interval 10.0

CollectHealth true

CollectPerfMetrics false

EnableDispatchAll false

</Plugin>

    2. Run collectd

  • dcpmm plugin collects the health information metrics at the default interval (10s) and the output of the csv plugin contains output files with values for health information metrics and timestamp at var/lib/collectd/<hostname>/.
  • The csv plugin output should contain dimm-x folders. x should have the value 0 - n, n being the number of DCPMMs available in the system (each DCPMM having a corresponding folder).
  • Each dcpmm-x folder should contain the following csv files:

      health-controller_temperature-2019-10-31  health-max_media_temperature-2019-10-31  health-power_on_time-2019-10-31

      health-health_status-2019-10-31                  health-media_temperature-2019-10-31          health-uptime-2019-10-31

      health-last_shutdown_time-2019-10-31        health-lifespan_remaining-2019-10-31           timestamp-epoch-2019-10-31

      health-max_controller_temperature-2019-10-31 health-lifespan_used-2019-10-31             timestamp-tsc_cycles-2019-10-31

  • Each csv file should have a content similar to the following:

      epoch,value

      1572553302.585,100.000000
      1572553312.585,100.000000
      1572553322.585,100.000000
      1572553332.585,100.000000

Pass
6Run dcpmm plugin with different interval than the collectd default interval and verify the output using csv plugin
  1. Update dcpmm config values to match the following:

<Plugin dcpmm>

Interval 2.0

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll false

</Plugin>

   2. Run collectd

Collectd collectd memory performance metrics every 2 seconds and the epoch value will be 2 seconds apart in the csv plugin output.

Each csv file should have epoch values same as the following:

      epoch,value

      1572553302.585,395.000000
      1572553304.585,398.000000
      1572553306.585,398.000000
      1572553308.585,399.000000

Pass
7Run dcpmm plugin to collect both memory performance and health information metrics and verify the output using csv plugin
  1. Enable dcpmm with the following configuration and csv plugin in collectd.conf

<Plugin dcpmm>

Interval 10.0

CollectHealth true

CollectPerfMetrics true

EnableDispatchAll false

</Plugin>

    2. Run collectd

Simultaneous collection of memory performance and health information metrics is disabled currently and collectd proceeds to collect memory performance metrics with the following warning:

[2019-12-02 15:42:06] WARNING: Health info and performance metrics cannot be collected simultaneously. Continuing with performance metrics collection...

Pass
8Run dcpmm plugin by enabling memory performance and EnableDispatchAll, and verify the output using csv plugin
  1. Enable dcpmm with the following configuration and csv plugin in collectd.conf

<Plugin dcpmm>

Interval 10.0

CollectHealth false

CollectPerfMetrics true

EnableDispatchAll true

</Plugin>

    2. Run collectd

Collectd collects memory performance metrics and the csv plugin will create output files for memory performance metrics. The parameter EnableDispatchAll is ignored in this use-case.

Pass
9Run dcpmm plugin by enabling health information metrics and EnableDispatchAll, and verify the output using csv plugin
  1. Enable dcpmm with the following configuration and csv plugin in collectd.conf

<Plugin dcpmm>

Interval 10.0

CollectHealth true

CollectPerfMetrics false

EnableDispatchAll true

</Plugin>

    2. Run collectd

Collectd collects health information metrics and the csv plugin will create output files for health information metrics. The parameter EnableDispatchAll is ignored in this use-case.

Pass
10Run dcpmm plugin by disabling both memory performance and health information metrics
  1. Enable dcpmm with the following configuration and csv plugin in collectd.conf

<Plugin dcpmm>

Interval 10.0

CollectHealth false

CollectPerfMetrics false

EnableDispatchAll false

</Plugin>

    2. Run collectd

Collectd exits with the following error:

[2019-12-02 15:42:06] dcpmm: CollectdHealth and CollectPerfMetrics are disabled. Enable atleast one.
[2019-12-02 15:42:06] Done parsing `/root/clct/share/collectd/types.db'
Error: Parsing the config file failed!

Pass
11Run dcpmm plugin as a normal user (without sudo or root permissions)
  1. Enable dcpmm plugin
  2. Run collectd as a normal user

dcpmm plugin exits with the following error at the init callback but collectd continues execution with other plugins if any.

[2019-12-02 15:52:06] dcpmm: Failed to obtain count of Intel(R) Optane DCPMM. A common cause for this is collectd running without root privileges. Ensure that collectd is running with root privileges. Also, make sure that Intel(R) Optane DC Persistent Memory is available in the system.

Pass
12Run dcpmm plugin on a platform without Intel Optane DC Persistent Memory availability
  1. Enable dcpmm plugin
  2. Run collectd

dcpmm plugin exits with the following error at the init callback but collectd continues execution with other plugins if any.

[2019-12-02 15:52:06] dcpmm: Failed to obtain count of Intel(R) Optane DCPMM. A common cause for this is collectd running without root privileges. Ensure that collectd is running with root privileges. Also, make sure that Intel(R) Optane DC Persistent Memory is available in the system.

Pass
  • No labels