This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1713029 and then change the status of the bug to 'Confirmed'. If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'. This change has been made by an automated script, maintained by the Ubuntu Kernel Team. ** Changed in: linux (Ubuntu) Status: New => Incomplete -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1713029 Title: Statistics of IO using is incorrect Status in linux package in Ubuntu: Incomplete Bug description: Each one second, my program reads /sys/block/$DEVICE/stat. It substracts previously saved values, then saves current values, so I know the hdd activity. But sometimes (once in 7 days) I've got too big values for sda (between last and current ones) (for example 5GB/second, 19GB/second, etc...). sudo lshw -class disk *-disk description: ATA Disk product: SPCC Solid State physical id: 0.0.0 bus info: scsi@2:0.0.0 logical name: /dev/sda version: 08.2 serial: EB84075517B200427436 size: 111GiB (120GB) capabilities: partitioned partitioned:dos configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=d01f3b8e Also I've written the script for monitoring the statistics #!/bin/bash while (true) do str=`date`" $(cat /sys/block/sda/stat)" echo $str >> log.txt sleep 10; done And got this values Fr Jul 28 07:39:38 MSK 2017 2368466 475339 105223134 1362848 5753154 7692148 661424840 31319540 0 4790052 32687100 Fr Jul 28 07:39:48 MSK 2017 2368466 475339 105223134 1362848 5753170 7692160 661425104 31319548 0 4790060 32687108 Fr Jul 28 07:39:58 MSK 2017 2368466 475339 105223134 1362848 5753174 7692162 661425152 31319556 0 4790068 32687116 Fr Jul 28 07:40:08 MSK 2017 2369133 475339 105228750 1363380 5771079 7694395 706209560 31324696 0 4795572 32692780 Fr Jul 28 07:40:18 MSK 2017 2369133 475339 105228750 1363380 5771087 7694431 706209960 31324708 0 4795584 32692792 Fr Jul 28 07:40:28 MSK 2017 2369133 475339 105228750 1363380 5771091 7694433 706210008 31324716 0 4795592 32692800 Fr Jul 28 07:40:38 MSK 2017 2369133 475339 105228750 1363380 5771244 7694714 706213528 31325052 0 4795604 32693136 You can see that the difference (3,4 lines) is very big between 706209560 and 661425152, my ssd can read 250 Mb/sec, but not 5 Gb/sec. Also you can use this program for monitoring (g++ -std=c++14 name.cpp) #include <iostream> #include <fstream> #include <regex> #include <tuple> #include <chrono> #include <thread> #include <cstdint> const int HDD_READ_POS = 2; const int HDD_WRITE_POS = 6; const int UNIX_SECTOR_SIZE = 512; uint64_t prevRead = static_cast<uint64_t>(0); uint64_t prevWrite = static_cast<uint64_t>(0); std::tuple<uint64_t, uint64_t> hddStatus(const std::string &name="sda") { std::ifstream in("/sys/block/"+name+"/stat"); auto readVal_ = static_cast<uint64_t>(0); auto writeVal_= static_cast<uint64_t>(0); if ( ! in.is_open() ) { return std::tuple<uint64_t, uint64_t> (readVal_, writeVal_); } std::string line; std::regex rgx ( "\\d+" ); std::regex_token_iterator<std::string::iterator> end; while (std::getline(in, line) ){ std::regex_token_iterator<std::string::iterator> iter( line.begin(), line.end(), rgx, 0 ); int pos_ = 0 ; while ( iter != end ) { if ( pos_ == HDD_READ_POS){ readVal_ = std::stoul( *iter ) ; } if ( pos_ == HDD_WRITE_POS){ writeVal_ = std::stoul( *iter ) ; } ++iter; ++pos_; } } return std::tuple<uint64_t, uint64_t> (readVal_, writeVal_); } void init() { auto values = hddStatus(); prevRead = std::get<0>( values ) * UNIX_SECTOR_SIZE; prevWrite = std::get<1>( values ) * UNIX_SECTOR_SIZE; } int main(int argc, char const *argv[]) { init(); while(true){ std::ofstream stat("statistics.txt", std::fstream::out | std::fstream::app); if ( stat.is_open() ){ auto values = hddStatus(); auto read = std::get<0>( values ) * UNIX_SECTOR_SIZE; auto write = std::get<1>( values ) * UNIX_SECTOR_SIZE; // stat<<"Current Read: "<< read<<" Write: "<<write<<'\n'; if (read > prevRead){ stat<<"Diff Read: "<< read - prevRead <<'\n'; std::cout<<"Diff Read: "<< read - prevRead <<'\n'; } if ( write > prevWrite){ stat<<"Diff Write: "<<write - prevWrite <<'\n'; std::cout<<"Diff Write: "<<write - prevWrite <<'\n'; } prevRead = read; prevWrite = write; std::this_thread::sleep_for(std::chrono::seconds(1)); } } return 0; } ProblemType: Bug DistroRelease: Ubuntu 16.04 Package: linux-image-4.10.0-32-generic 4.10.0-32.36~16.04.1 ProcVersionSignature: Ubuntu 4.10.0-32.36~16.04.1-generic 4.10.17 Uname: Linux 4.10.0-32-generic x86_64 ApportVersion: 2.20.1-0ubuntu2.10 Architecture: amd64 CurrentDesktop: Unity Date: Fri Aug 25 13:43:59 2017 InstallationDate: Installed on 2017-04-14 (132 days ago) InstallationMedia: Ubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719) SourcePackage: linux-hwe UpgradeStatus: No upgrade log present (probably fresh install) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1713029/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp