IBM Streams 4.3.0

Example: Using resource usage thresholds to protect overloaded resources

Scenario: You see that one of your resources is overloaded and you want to protect it from having more work placed on it.

About this task

You can change the resource usage thresholds with the streamtool commands.

Procedure

  1. View the current metrics for the resource. Run the streamtool capturestate command. Look for the values of these metrics under the <host> element:
    • cpuUtilization
    • memoryUtilization
    • networkUtilization

    Example command: streamtool capturestate --select hosts=metrics

    On one of the resources, you see that the CPU usage and memory usage are high:

    …
        <metric name="cpuUtilization" lastChangeObserved="1504302827" userDefined="false">
          <metricValue xsi:type="streams:longType" value="90"/>
        </metric>
    …
        <metric name="memoryUtilization" lastChangeObserved="1504302827" userDefined="false">
          <metricValue xsi:type="streams:longType" value="90"/>
        </metric>
       …
        <metric name="networkUtilization" lastChangeObserved="1504302827" userDefined="false">
          <metricValue xsi:type="streams:longType" value="15"/>
        </metric>
    …
  2. Set the resourceLoadProtectionEnabled instance property:

    streamtool setproperty instance.resourceLoadProtectionEnabled=true

  3. Modify the upper thresholds for CPU usage and memory usage:

    streamtool setproperty resourceCpuUsageUpperThreshold=75 resourceMemoryUsageUpperThreshold=50

    Now no PEs should be placed on the overloaded resource. To confirm the changes, you can preview the job:

  4. Optional: Preview the job:

    streamtool submitjob --preview myapp.sab

    Examine the output and confirm that the overloaded resources are not chosen for PE placements.