Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IO counters may overlap on Linux #802

Closed
giampaolo opened this issue Apr 3, 2016 · 1 comment
Closed

IO counters may overlap on Linux #802

giampaolo opened this issue Apr 3, 2016 · 1 comment

Comments

@giampaolo
Copy link
Owner

giampaolo commented Apr 3, 2016

See discussion https://groups.google.com/forum/#!topic/psutil/0X5IGYw8xJg
This is true for disk_io_counters() on Linux but may also happen on other platforms.
Same goes for net_io_counters(). If that's the case we may want to add some kind of logic (e.g. via a decorator) which keeps track of the last returned numbers and if they are smaller than in the previous call it means we bumped into an overlap and as such it sums previous num + new overalapped num.
This way the application won't have to deal with this.
For now I added a warning in the doc in 34caac9.

nlevitt added a commit to nlevitt/psutil that referenced this issue Jun 22, 2016
* origin/master: (121 commits)
  update HISTORY/README
  giampaolo#810: rename windows wheels to make pip 7.1.2 happy
  add doc warning about disk_io_counter() numbers which may overlap (se giampaolo#802)
  update HISTORY
  git travis/osx error
  fix typo
  fix travis err
  add STAT for ps.py
  Convert string arguments to bytes
  appveyor download script: check the num of download files and print a warning if it's < than expected
  win / CI: try not to upgrade pip version and see whether pip produces compatible wheels
  refactor makefile
  makefile refactoring
  makefile refactoring
  Updated to use better if/else/endif values (my bad) Updated HISTORY to explain better that Win XP still uses 32bit values Reverted test code, will add in a different PR
  Styling fixes (spaces instead of tabs)
  PEP 8 compliance and history update (Vista+ only for fix)
  Type fix
  Continue on RuntimeError when running df on partitions it can't run on
  Fix disk_usage test to use 1 kB block size due to issues with OS X
  Add comment lines to ifs for win versions
  Actually does need it in XP/2000 unfortunately
  Tried to keep the mingw32 support but win 7 sdk is causing issues
  Whoops, whitespace issue
  Add back in ws2tcpip.h in the proper place in Win XP / Win 2000
  Fixes for compiling on Win XP/Win 200
  Update HISTORY.rst with giampaolo#816 issue bug fix
  Fix for windows net_io_counters wrapping after 4.3GB due to MIB_IFROW using DWORD. Updated to use MIB_IF_ROW2 which gives ULONG values instead. This causes more breaking changes for Windows XP and all Windows versions less than Vista / Server 2008 meaning that it should have no problems working on Vista / Server 2008 and beyond.
  fix doc indentation
  doc indentation
  fix giampaolo#829: disk_usage().percent takes reserved root space into account
  giampaolo#829: add tests to compare disk_usage() with 'df' cmdline utility
  small refactoring
  update comment
  update badges
  move stuff around
  reorganize (move stuff in) _common.py
  def __all__ for _common.py module
  reorganize (move) test utils
  update __all__
  small @memoize refactoring
  Fix psutil.virtual_memory() type mismatch for NetBSD.
  prettyfy code
  prettyfy code
  update README
  Sets Makefile variable for imports compatible with Python 3.x
  fix linux test
  memory_maps: use bytes
  fir unpackment err
  refactor smaps code
  linux memory_maps refactoring
  fix typo
  update doc
  update version and HISTORY
  re-enable win services
  re-enable all tests on windows
  try to upgrade pip
  try to upgrade pip
  try to upgrade pip
  try to install pip globally
  try to upgrade pip
  force build of old 4.1.0 ver
  giampaolo#817: add script to download exes/whels from appveyor
  appveyor exp 5
  appveyor exp 4
  appveyor exp 3
  appveyor exp 2 appveyor/ci#806 (comment)
  appveyor exp appveyor/ci#806 (comment)
  appveyor experiment
  appveyor experiment
  appveyor: attempt differe VS config for py 3.5
  fix typo
  restore previous appveyor conf + try to add python 3.5 64 bits
  try easier appveyor conf, see pypa/packaging.python.org#172
  try to make appveyor create exes/wheels
  add freebsd dev notes
  refactor ctx switches
  uids/gids refactoring
  refactor num_threads
  more refactoring
  [Linux] Process.name() is 25% faster (on python 3)
  ignore me
  remove outdated test
  [Linux] speedup Process.status() by 28%
  [Linux] speedup Process.pid() by 20% by reading it from /proc/pid/stat instead of /proc/pid/status
  set ppid
  linux set ppid
  fix 813: have as_dict() ignore extraneous attribute names which getsattached to the Process instance
  pep8 fixes
  fix giampaolo#812: [NetBSD] fix compilation on NetBSD-5.x.
  build fix: MNT_RELATIME and MNT_EXTATTR are not available on NetBSD-5
  build fix: declare warn()
  update IDEAS
  fix win tests
  better AD error handling on win
  service descr: handle unicode errors
  service descr: handle empty description str
  check PyUnicodeDecode return value
  add services memory leak tests
  update doc
  ...
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
giampaolo added a commit that referenced this issue May 9, 2017
@giampaolo
Copy link
Owner Author

giampaolo commented May 9, 2017

Ok, both disk_io_counters() and net_io_counters() now automatically wrap numbers in case they restart from 0. This behavior can be controlled by the new nowrap=True/False parameter.
Merged in #1056

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant