diff --git a/collector/oshi/src/main/java/org/apache/karaf/decanter/collector/oshi/OshiCollector.java b/collector/oshi/src/main/java/org/apache/karaf/decanter/collector/oshi/OshiCollector.java
index 3ea7a4f..e725fe3 100644
--- a/collector/oshi/src/main/java/org/apache/karaf/decanter/collector/oshi/OshiCollector.java
+++ b/collector/oshi/src/main/java/org/apache/karaf/decanter/collector/oshi/OshiCollector.java
@@ -51,6 +51,8 @@
 
     private Dictionary<String, Object> properties;
 
+    long[] lastSystemCpuLoadTicks = null;
+
     @Activate
     public void activate(ComponentContext componentContext) {
         activate(componentContext.getProperties());
@@ -58,6 +60,7 @@
 
     public void activate(Dictionary<String, Object> properties) {
         this.properties = properties;
+        this.lastSystemCpuLoadTicks = null;
     }
 
     @Override
@@ -110,6 +113,8 @@
                 data.put("processor.interrupts", hardwareAbstractionLayer.getProcessor().getInterrupts());
                 data.put("processor.logicalProcessorCount", hardwareAbstractionLayer.getProcessor().getLogicalProcessorCount());
                 data.put("processor.maxFreq", hardwareAbstractionLayer.getProcessor().getMaxFreq());
+                data.put("processor.systemCpuLoadBetweenTicks", lastSystemCpuLoadTicks != null ? hardwareAbstractionLayer.getProcessor().getSystemCpuLoadBetweenTicks(lastSystemCpuLoadTicks) : null);
+                lastSystemCpuLoadTicks = hardwareAbstractionLayer.getProcessor().getSystemCpuLoadTicks();
                 boolean processorsLogical = properties.get("processors.logical") != null ? Boolean.parseBoolean(properties.get("processors.logical").toString()) : true;
                 if (processorsLogical) {
                     int i = 0;
diff --git a/collector/oshi/src/test/java/org/apache/karaf/decanter/collector/oshi/OshiCollectorTest.java b/collector/oshi/src/test/java/org/apache/karaf/decanter/collector/oshi/OshiCollectorTest.java
index 8936848..c2c5473 100644
--- a/collector/oshi/src/test/java/org/apache/karaf/decanter/collector/oshi/OshiCollectorTest.java
+++ b/collector/oshi/src/test/java/org/apache/karaf/decanter/collector/oshi/OshiCollectorTest.java
@@ -27,6 +27,8 @@
 
 public class OshiCollectorTest {
 
+    static final String SYSTEM_CPU_LOAD_PROPERTY = "processor.systemCpuLoadBetweenTicks";
+
     @Test
     public void test() throws Exception {
         DispatcherMock dispatcherMock = new DispatcherMock();
@@ -45,6 +47,29 @@
         }
     }
 
+   /**
+    * Verify the SYSTEM_CPU_LOAD_PROPERTY is null on the initial collector run
+    * and not null on subsequent collector runs.
+    */
+   @Test
+   public void testSystemCpuLoad() throws Exception {
+        DispatcherMock dispatcherMock = new DispatcherMock();
+
+        OshiCollector collector = new OshiCollector();
+        collector.setDispatcher(dispatcherMock);
+        collector.activate(new Hashtable<>());
+
+        collector.run();
+        collector.run();
+
+        Assert.assertEquals(2, dispatcherMock.postedEvents.size());
+        Event firstEvent = dispatcherMock.postedEvents.get(0);
+        Assert.assertNull("Initial systemCpuLoadBetweenTicks is null", firstEvent.getProperty(SYSTEM_CPU_LOAD_PROPERTY));
+        Event secondEvent = dispatcherMock.postedEvents.get(1);
+        Assert.assertNotNull("Second systemCpuLoadBetweenTicks is not null", secondEvent.getProperty(SYSTEM_CPU_LOAD_PROPERTY));
+        System.out.println(SYSTEM_CPU_LOAD_PROPERTY + ":" + secondEvent.getProperty(SYSTEM_CPU_LOAD_PROPERTY));
+    }
+
     class DispatcherMock implements EventAdmin {
 
         public List<Event> postedEvents = new ArrayList<>();
