diff --git a/clients/client-psutil.py b/clients/client-psutil.py
index 3dafb61..97e15b5 100755
--- a/clients/client-psutil.py
+++ b/clients/client-psutil.py
@@ -206,43 +206,47 @@ def _disk_io():
     如果这里做连续性IO,那么普通机械硬盘写入到100Mb/s,那么也能造成硬盘长时间的等待。
     磁盘读写有误差:4k,8k ,https://stackoverflow.com/questions/34413926/psutil-vs-dd-monitoring-disk-i-o
     """
-    while True:
-        # first get a list of all processes and disk io counters
-        procs = [p for p in psutil.process_iter()]
-        for p in procs[:]:
-            try:
-                p._before = p.io_counters()
-            except psutil.Error:
-                procs.remove(p)
-                continue
-        disks_before = psutil.disk_io_counters()
-
-        # sleep some time, only when INTERVAL==1 , io read/write per_sec.
-        # when INTERVAL > 1, io read/write per_INTERVAL
-        time.sleep(INTERVAL)
-
-        # then retrieve the same info again
-        for p in procs[:]:
-            with p.oneshot():
+    if "darwin" in sys.platform:
+        diskIO["read"] = 0
+        diskIO["write"] = 0
+    else:
+        while True:
+            # first get a list of all processes and disk io counters
+            procs = [p for p in psutil.process_iter()]
+            for p in procs[:]:
                 try:
-                    p._after = p.io_counters()
-                    p._cmdline = ' '.join(p.cmdline())
-                    if not p._cmdline:
-                        p._cmdline = p.name()
-                    p._username = p.username()
-                except (psutil.NoSuchProcess, psutil.ZombieProcess):
+                    p._before = p.io_counters()
+                except psutil.Error:
                     procs.remove(p)
-        disks_after = psutil.disk_io_counters()
+                    continue
+            disks_before = psutil.disk_io_counters()
 
-        # finally calculate results by comparing data before and
-        # after the interval
-        for p in procs:
-            p._read_per_sec = p._after.read_bytes - p._before.read_bytes
-            p._write_per_sec = p._after.write_bytes - p._before.write_bytes
-            p._total = p._read_per_sec + p._write_per_sec
+            # sleep some time, only when INTERVAL==1 , io read/write per_sec.
+            # when INTERVAL > 1, io read/write per_INTERVAL
+            time.sleep(INTERVAL)
 
-        diskIO["read"] = disks_after.read_bytes - disks_before.read_bytes
-        diskIO["write"] = disks_after.write_bytes - disks_before.write_bytes
+            # then retrieve the same info again
+            for p in procs[:]:
+                with p.oneshot():
+                    try:
+                        p._after = p.io_counters()
+                        p._cmdline = ' '.join(p.cmdline())
+                        if not p._cmdline:
+                            p._cmdline = p.name()
+                        p._username = p.username()
+                    except (psutil.NoSuchProcess, psutil.ZombieProcess):
+                        procs.remove(p)
+            disks_after = psutil.disk_io_counters()
+
+            # finally calculate results by comparing data before and
+            # after the interval
+            for p in procs:
+                p._read_per_sec = p._after.read_bytes - p._before.read_bytes
+                p._write_per_sec = p._after.write_bytes - p._before.write_bytes
+                p._total = p._read_per_sec + p._write_per_sec
+
+            diskIO["read"] = disks_after.read_bytes - disks_before.read_bytes
+            diskIO["write"] = disks_after.write_bytes - disks_before.write_bytes
 
 def get_realtime_data():
     '''