diff --git a/sbs.conf b/sbs.conf
index dda21f77fe9e1ee94b8ff4105cfd4e719d0d8901..6fb11ea4a1c011f2b6f176d684f27dd20f3509ca 100644
--- a/sbs.conf
+++ b/sbs.conf
@@ -517,7 +517,7 @@ Main:       test-rls
 Type:       test
 BoardId:    stm32f407vg_skyward_tortellino
 BinName:    test-lsm9ds1-fifo
-Include:    %shared %spi
+Include:    %shared %spi %logger
 Defines:    -DDEBUG
 Main:       drivers/test-lsm9ds1-fifo
 
@@ -525,6 +525,6 @@ Main:       drivers/test-lsm9ds1-fifo
 Type:       test
 BoardId:    stm32f407vg_skyward_tortellino
 BinName:    test-lis3dsh
-Include:    %shared %spi
+Include:    %shared %spi 
 Defines:
 Main:       drivers/test-lis3dsh
diff --git a/src/shared/diagnostic/SkywardStack.h b/src/shared/diagnostic/SkywardStack.h
index 11134a161cde691dc48204e07af230199b919c73..fa6205dc86cc10d48bed09f2f204f215c3cef0b1 100644
--- a/src/shared/diagnostic/SkywardStack.h
+++ b/src/shared/diagnostic/SkywardStack.h
@@ -25,7 +25,7 @@
 
 #include <algorithm>
 
-static const unsigned int STACK_MIN_FOR_SKYWARD = 16*1024;
+static const unsigned int STACK_MIN_FOR_SKYWARD = 4*1024;
 
 inline unsigned int skywardStack(unsigned int stack)
 {
diff --git a/src/shared/logger/Logger.h b/src/shared/logger/Logger.h
index 0794e0fa6f67f2780226b17ec41612edecce2610..cfbcea6edf03ba2869b8406427d00c408b97fb71 100644
--- a/src/shared/logger/Logger.h
+++ b/src/shared/logger/Logger.h
@@ -174,12 +174,11 @@ private:
         log(s);
     }
 
-    static const unsigned int filenameMaxRetry =
-        100;                                         ///< Limit on new filename
-    static const unsigned int maxRecordSize = 256;   ///< Limit on logged data
-    static const unsigned int numRecords    = 1024;  ///< Size of record queues
-    static const unsigned int bufferSize = 64 * 1024;  ///< Size of each buffer
-    static const unsigned int numBuffers = 8;          ///< Number of buffers
+    static const unsigned int filenameMaxRetry = 100; ///< Limit on new filename
+    static const unsigned int maxRecordSize = 64;   ///< Limit on logged data
+    static const unsigned int numRecords    = 256;  ///< Size of record queues
+    static const unsigned int bufferSize = 16 * 256;  ///< Size of each buffer
+    static const unsigned int numBuffers = 4;          ///< Number of buffers
 
     /**
      * A record is a single serialized logged class. Records are used to
diff --git a/src/tests/drivers/test-lsm9ds1-fifo.cpp b/src/tests/drivers/test-lsm9ds1-fifo.cpp
index 48c1e4e71d78ed63663912a6e0642db3c635e985..96b420f8868a355c3cea61e05229e294424f9df4 100644
--- a/src/tests/drivers/test-lsm9ds1-fifo.cpp
+++ b/src/tests/drivers/test-lsm9ds1-fifo.cpp
@@ -26,6 +26,7 @@
 #include "drivers/HardwareTimer.h"
 #include "drivers/spi/SPIDriver.h"
 #include "sensors/LSM9DS1/LSM9DS1_AxelGyro.h"
+#include "diagnostic/CpuMeter.h"
 #include "logger/Logger.h"
 
 using namespace miosix;
@@ -64,6 +65,13 @@ volatile uint32_t delta;
 // LSM9DS1 obj
 LSM9DS1_XLG* lsm9ds1 = nullptr;
 
+//struct for the logger
+struct IMUSample
+{
+    lsm9ds1XLGSample sample;
+    int avgCPU;
+};
+
 // Interrupt handlers
 void __attribute__((naked)) EXTI13_IRQHandler()
 {
@@ -92,8 +100,6 @@ void __attribute__((used)) EXTI13_IRQHandlerImpl()
 void gpioConfig();
 void timer5Config();
 void EXTI1Config();
-void fakeLogger(lsm9ds1XLGSample sample); 
-void printLogger();
 
 int main()
 {
@@ -102,9 +108,10 @@ int main()
     uint32_t dt;
     uint64_t timestamp = 0;
 
+    Logger& logger = Logger::instance();
+    logger.start();
+
     gpioConfig();
-    Thread::sleep(5000);
-    return 0;
     timer5Config();
     EXTI1Config();
 
@@ -120,7 +127,6 @@ int main()
     //start sampling
     for (;;)
     {
-        //printf("%d\n", GpioINT1::value());
         if (flagSPIReadRequest && fifo_counter < FIFO_SAMPLES)
         {
             flagSPIReadRequest = false;
@@ -128,10 +134,12 @@ int main()
             lsm9ds1->onSimpleUpdate();
             for(int i=0 ; i < FIFO_WATERMARK; i++)
             {
-                lsm9ds1XLGSample sample = lsm9ds1->getLsm9ds1FIFO()[i];
+                IMUSample s; 
+                s.sample = lsm9ds1->getLsm9ds1FIFO()[i];
                 timestamp += dt; 
-                sample.timestamp = timestamp; 
-                fakeLogger(sample);
+                s.sample.timestamp = timestamp; 
+                s.avgCPU = averageCpuUtilization();
+                logger.log(s);
             }
             LED1.low();
             fifo_counter++;
@@ -143,7 +151,8 @@ int main()
         }
     }
 
-    printLogger();
+    logger.stop();
+
     LED1.low();
     LED2.low();
 
@@ -222,36 +231,4 @@ void EXTI1Config()  // PC13
     // Enable the interrupt in the interrupt controller
     NVIC_EnableIRQ(IRQn_Type::EXTI15_10_IRQn);
     NVIC_SetPriority(IRQn_Type::EXTI15_10_IRQn, 47);
-}
-
-uint16_t counter = 0;
-float   ax[FIFO_WATERMARK*FIFO_SAMPLES],
-        ay[FIFO_WATERMARK*FIFO_SAMPLES],
-        az[FIFO_WATERMARK*FIFO_SAMPLES],
-        gx[FIFO_WATERMARK*FIFO_SAMPLES],
-        gy[FIFO_WATERMARK*FIFO_SAMPLES],
-        gz[FIFO_WATERMARK*FIFO_SAMPLES];
-
-uint64_t t[FIFO_WATERMARK*FIFO_SAMPLES];
-
-void fakeLogger(lsm9ds1XLGSample sample)
-{
-    ax[counter] = sample.axelData.getX();
-    ay[counter] = sample.axelData.getY();
-    az[counter] = sample.axelData.getZ();
-    gx[counter] = sample.gyroData.getX();
-    gy[counter] = sample.gyroData.getY();
-    gz[counter] = sample.gyroData.getZ();
-    t[counter]  = sample.timestamp;
-    counter++;    
-}
-
-void printLogger()
-{
-    for(int i = 0; i < counter; i++)
-    {
-        printf("%lld>>%.3f,%.3f,%.3f,%.3f,%.3f,%.3f\n", t[i],ax[i],ay[i],az[i],
-                                                            gx[i],gy[i],gz[i]);
-                                                    
-    }
 }
\ No newline at end of file