use psutil for portability