diff options
Diffstat (limited to 'python/psutil/TODO')
-rw-r--r-- | python/psutil/TODO | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/python/psutil/TODO b/python/psutil/TODO new file mode 100644 index 000000000..a5df809d0 --- /dev/null +++ b/python/psutil/TODO @@ -0,0 +1,167 @@ +TODO +==== + +A collection of ideas and notes about stuff to implement in future versions. +"#NNN" occurrences refer to bug tracker issues at: +https://github.com/giampaolo/psutil/issues + + +HIGHER PRIORITY +=============== + + * OpenBSD support. + + * #371: CPU temperature (apparently OSX and Linux only; on Linux it requires + lm-sensors lib). + + * #269: expose network ifaces RX/TW queues. This should probably go into + net_if_stats(). Figure out on what platforms this is supported: + Linux: yes + Others: ? + + * Process.threads(): thread names; patch for OSX available at: + https://code.google.com/p/plcrashreporter/issues/detail?id=65 + + * Asynchronous psutil.Popen (see http://bugs.python.org/issue1191964) + + * (Windows) fall back on using WMIC for Process methods returning AccessDenied + + * #613: thread names. + + * #604: emulate os.getloadavg() on Windows + + * #269: NIC rx/tx queue. + + +LOWER PRIORITY +============== + + * #355: Android support. + + * #276: GNU/Hurd support. + + * #429: NetBSD support. + + * DragonFlyBSD support? + + * AIX support? + + * examples/taskmgr-gui.py (using tk). + + * system-wide number of open file descriptors: + * https://jira.hyperic.com/browse/SIGAR-30 + * http://www.netadmintools.com/part295.html + + * Number of system threads. + * Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms684824(v=vs.85).aspx + + * #357: what CPU a process is on. + + * Doc / wiki which compares similarities between UNIX cli tools and psutil. + Example: + df -a -> psutil.disk_partitions + lsof -> psutil.Process.open_files() and psutil.Process.open_connections() + killall-> (actual script) + tty -> psutil.Process.terminal() + who -> psutil.users() + + +DEBATABLE +========= + + * psutil.proc_tree() something which obtains a {pid:ppid, ...} dict for + all running processes in one shot. This can be factored out from + Process.children() and exposed as a first class function. + PROS: on Windows we can take advantage of _psutil_windows.ppid_map() + which is faster than iterating over all pids and calling ppid(). + CONS: examples/pstree.py shows this can be easily done in the user code + so maybe it's not worth the addition. + + * advanced cmdline interface exposing the whole API and providing different + kind of outputs (e.g. pprinted, colorized, json). + + * [Linux]: process cgroups (http://en.wikipedia.org/wiki/Cgroups). They look + similar to prlimit() in terms of functionality but uglier (they should allow + limiting per-process network IO resources though, which is great). Needs + further reading. + + * Should we expose OS constants (psutil.WINDOWS, psutil.OSX etc.)? + + * Python 3.3. exposed different sched.h functions: + http://docs.python.org/dev/whatsnew/3.3.html#os + http://bugs.python.org/issue12655 + http://docs.python.org/dev/library/os.html#interface-to-the-scheduler + It might be worth to take a look and figure out whether we can include some + of those in psutil. + Also, we can probably reimplement wait_pid() on POSIX which is currently + implemented as a busy-loop. + + * Certain systems provide CPU times about process children. On those systems + Process.cpu_times() might return a (user, system, user_children, + system_children) ntuple. + * Linux: /proc/{PID}/stat + * Solaris: pr_cutime and pr_cstime + * FreeBSD: none + * OSX: none + * Windows: none + + * ...also, os.times() provides 'elapsed' times as well. + + * ...also Linux provides guest_time and cguest_time. + + * Enrich exception classes hierarchy on Python >= 3.3 / post PEP-3151 so that: + - NoSuchProcess inherits from ProcessLookupError + - AccessDenied inherits from PermissionError + - TimeoutExpired inherits from TimeoutError (debatable) + See: http://docs.python.org/3/library/exceptions.html#os-exceptions + + * Process.threads() might grow an extra "id" parameter so that it can be + used as such: + + >>> p = psutil.Process(os.getpid()) + >>> p.threads(id=psutil.current_thread_id()) + thread(id=2539, user_time=0.03, system_time=0.02) + >>> + + Note: this leads to questions such as "should we have a custom NoSuchThread + exception? Also see issue #418. + + Note #2: this would work with os.getpid() only. + psutil.current_thread_id() might be desirable as per issue #418 though. + + * should psutil.TimeoutExpired exception have a 'msg' kwarg similar to + NoSuchProcess and AccessDenied? Not that we need it, but currently we + cannot raise a TimeoutExpired exception with a specific error string. + + * process_iter() might grow an "attrs" parameter similar to Process.as_dict() + invoke the necessary methods and include the results into a "cache" + attribute attached to the returned Process instances so that one can avoid + catching NSP and AccessDenied: + for p in process_iter(attrs=['cpu_percent']): + print(p.cache['cpu_percent']) + This also leads questions as whether we should introduce a sorting order. + + * round Process.memory_percent() result? + + * #550: number of threads per core. + + * Have psutil.Process().cpu_affinity([]) be an alias for "all CPUs"? + + +COMPATIBILITY BREAKAGE +====================== + +Removals (will likely happen in 2.2): + + * (S) psutil.Process.nice (deprecated in 0.5.0) + * (S) get_process_list (deprecated in 0.5.0) + * (S) psutil.*mem* functions (deprecated in 0.3.0 and 0.6.0) + * (M) psutil.network_io_counters (deprecated in 1.0.0) + * (M) local_address and remote_address Process.connection() namedtuple fields + (deprecated in 1.0.0) + + +REJECTED IDEAS +============== + +STUB |