Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

BÁO CÁO ĐÁNH GIÁ HIỆU NĂNG ĐẦU ĐỌC Ổ CỨNG NGOÀI

Thiết bị chuyển đổi USB Type C & USB-A

Thực hiện trên: MacBook Pro M1 (2020) – RAM 16GB | Ổ cứng: Samsung SSD 240GB SATA 6Gbps


1. Giới thiệu

Mục tiêu của tài liệu này là đánh giá và so sánh hiệu năng truyền dữ liệu của hai thiết bị chuyển đổi giao tiếp cho ổ cứng SSD/HDD 2.5 inch:

  • Type C: UGREEN CM321 – Cáp chuyển USB 3.0 & USB-C sang SATA 7+15 (50cm)
  • USB A: Đầu chuyển USB-C cái sang USB-A đực 3.0, hỗ trợ sạc nhanh 18W, tốc độ truyền 10Gbps

Các bài kiểm tra sử dụng phần mềm mã nguồn mở fio (Flexible I/O Tester) – công cụ benchmark I/O mạnh mẽ, phổ biến trong kiểm thử hiệu năng đĩa, với các tùy chọn sau:

  • --rw=readwrite: Đọc và ghi tuần tự
  • --bs=1M / 4K: Kích thước block là 1MB (đánh giá Throughput) hoặc 4KB (đánh giá IOPS)
  • --size=2G: Dữ liệu mẫu 2GB
  • --iodepth=1: Độ sâu hàng đợi là 1
  • --time_based --runtime=30s: Chạy liên tục 30 giây để đo hiệu năng ổn định
  • --direct=1: Truy cập thiết bị trực tiếp, bỏ qua bộ đệm hệ thống
  • --group_reporting: Tổng hợp kết quả

2. Kết quả đánh giá

2.1 Giao tiếp Type C (UGREEN CM321)

Throughput

### Throughput
shell> fio --name=seqrw --rw=readwrite --size=2G --directory=. --bs=1M --numjobs=1 --time_based --runtime=30s --iodepth=1 --direct=1 --group_reporting
seqrw: (g=0): rw=rw, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
fio-3.40
Starting 1 process
Jobs: 1 (f=1): [M(1)][100.0%][r=156MiB/s,w=160MiB/s][r=156,w=160 IOPS][eta 00m:00s]
seqrw: (groupid=0, jobs=1): err= 0: pid=20925: Mon Jul 28 20:17:47 2025
  read: IOPS=150, BW=151MiB/s (158MB/s)(4529MiB/30001msec)
    clat (usec): min=2685, max=6276, avg=2860.39, stdev=180.09
     lat (usec): min=2685, max=6276, avg=2860.48, stdev=180.10
    clat percentiles (usec):
     |  1.00th=[ 2737],  5.00th=[ 2769], 10.00th=[ 2769], 20.00th=[ 2802],
     | 30.00th=[ 2802], 40.00th=[ 2802], 50.00th=[ 2802], 60.00th=[ 2835],
     | 70.00th=[ 2835], 80.00th=[ 2835], 90.00th=[ 2999], 95.00th=[ 3261],
     | 99.00th=[ 3523], 99.50th=[ 3720], 99.90th=[ 4621], 99.95th=[ 5014],
     | 99.99th=[ 6259]
   bw (  KiB/s): min=111524, max=188952, per=100.00%, avg=154707.75, stdev=16704.12, samples=59
   iops        : min=  108, max=  184, avg=150.78, stdev=16.42, samples=59
  write: IOPS=154, BW=154MiB/s (162MB/s)(4635MiB/30001msec); 0 zone resets
    clat (usec): min=2688, max=11790, avg=3651.84, stdev=414.28
     lat (usec): min=2699, max=11802, avg=3662.11, stdev=414.44
    clat percentiles (usec):
     |  1.00th=[ 2900],  5.00th=[ 3097], 10.00th=[ 3163], 20.00th=[ 3294],
     | 30.00th=[ 3490], 40.00th=[ 3654], 50.00th=[ 3720], 60.00th=[ 3785],
     | 70.00th=[ 3818], 80.00th=[ 3851], 90.00th=[ 3916], 95.00th=[ 3982],
     | 99.00th=[ 5211], 99.50th=[ 5604], 99.90th=[ 8029], 99.95th=[ 8717],
     | 99.99th=[11731]
   bw (  KiB/s): min=133120, max=182495, per=99.91%, avg=158053.20, stdev=13039.61, samples=59
   iops        : min=  130, max=  178, avg=154.07, stdev=12.78, samples=59
  lat (msec)   : 4=97.95%, 10=2.04%, 20=0.01%
  cpu          : usr=0.23%, sys=2.52%, ctx=9225, majf=0, minf=10
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=4529,4635,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=151MiB/s (158MB/s), 151MiB/s-151MiB/s (158MB/s-158MB/s), io=4529MiB (4749MB), run=30001-30001msec
  WRITE: bw=154MiB/s (162MB/s), 154MiB/s-154MiB/s (162MB/s-162MB/s), io=4635MiB (4860MB), run=30001-30001msec

IOPS (4KB)

shell> fio --name=seqrw --rw=readwrite --size=2G --directory=. --bs=4K --numjobs=1 --time_based --runtime=30s --iodepth=1 --direct=1 --group_reporting
seqrw: (g=0): rw=rw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.40
Starting 1 process
Jobs: 1 (f=1): [M(1)][100.0%][r=27.3MiB/s,w=27.2MiB/s][r=6980,w=6959 IOPS][eta 00m:00s]
seqrw: (groupid=0, jobs=1): err= 0: pid=20935: Mon Jul 28 20:19:54 2025
  read: IOPS=9938, BW=38.8MiB/s (40.7MB/s)(1165MiB/30001msec)
    clat (nsec): min=0, max=22008k, avg=60972.45, stdev=169992.13
     lat (nsec): min=0, max=22008k, avg=61002.91, stdev=169992.31
    clat percentiles (nsec):
     |  1.00th=[      0],  5.00th=[      0], 10.00th=[      0],
     | 20.00th=[   1004], 30.00th=[   1004], 40.00th=[   1004],
     | 50.00th=[  77312], 60.00th=[  84480], 70.00th=[  88576],
     | 80.00th=[  93696], 90.00th=[  98816], 95.00th=[ 101888],
     | 99.00th=[ 144384], 99.50th=[ 193536], 99.90th=[3620864],
     | 99.95th=[3751936], 99.99th=[3883008]
   bw (  KiB/s): min=25296, max=94582, per=100.00%, avg=39888.07, stdev=20471.31, samples=59
   iops        : min= 6324, max=23645, avg=9971.73, stdev=5117.85, samples=59
  write: IOPS=9934, BW=38.8MiB/s (40.7MB/s)(1164MiB/30001msec); 0 zone resets
    clat (nsec): min=0, max=4377.0k, avg=39230.48, stdev=151257.11
     lat (nsec): min=0, max=4377.0k, avg=39267.50, stdev=151256.79
    clat percentiles (nsec):
     |  1.00th=[      0],  5.00th=[      0], 10.00th=[      0],
     | 20.00th=[   1004], 30.00th=[   1004], 40.00th=[   1004],
     | 50.00th=[   1004], 60.00th=[   1004], 70.00th=[   1004],
     | 80.00th=[ 112128], 90.00th=[ 124416], 95.00th=[ 138240],
     | 99.00th=[ 220160], 99.50th=[ 240640], 99.90th=[3424256],
     | 99.95th=[3620864], 99.99th=[3784704]
   bw (  KiB/s): min=25416, max=93124, per=100.00%, avg=39887.58, stdev=20493.71, samples=59
   iops        : min= 6354, max=23281, avg=9971.59, stdev=5123.41, samples=59
  lat (nsec)   : 2=11.75%
  lat (usec)   : 2=45.63%, 4=0.48%, 10=0.02%, 20=0.01%, 50=0.01%
  lat (usec)   : 100=25.55%, 250=16.16%, 500=0.19%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.19%, 10=0.01%, 50=0.01%
  cpu          : usr=0.83%, sys=15.35%, ctx=251434, majf=0, minf=11
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=298151,298045,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=38.8MiB/s (40.7MB/s), 38.8MiB/s-38.8MiB/s (40.7MB/s-40.7MB/s), io=1165MiB (1221MB), run=30001-30001msec
  WRITE: bw=38.8MiB/s (40.7MB/s), 38.8MiB/s-38.8MiB/s (40.7MB/s-40.7MB/s), io=1164MiB (1221MB), run=30001-30001msec
Tiêu chí Giá trị
Throughput Read: 151 MiB/s, Write: 154 MiB/s
IOPS (4KB) Read: 9,938, Write: 9,934
CPU sử dụng usr: 0.83%, sys: 15.35%
Độ trễ trung bình Read: 61 µs, Write: 39 µs

Nhận xét:
Thiết bị giao tiếp Type C cho thấy hiệu năng cao, đạt gần 160MB/s throughput và gần 10.000 IOPS, rất phù hợp cho SSD SATA sử dụng qua MacBook M1. Độ trễ đọc/ghi thấp, băng thông ổn định.


2.2 Giao tiếp USB A (thông qua đầu chuyển từ USB-C)

a. IOPS (Block size = 4K)

shell> fio --name=seqrw --rw=readwrite --size=2G --directory=. --bs=4K --numjobs=1 --time_based --runtime=30s --iodepth=1 --direct=1 --group_reporting
seqrw: (g=0): rw=rw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.40
Starting 1 process
Jobs: 1 (f=1): [M(1)][100.0%][r=6240KiB/s,w=6518KiB/s][r=1560,w=1629 IOPS][eta 00m:00s]
seqrw: (groupid=0, jobs=1): err= 0: pid=20974: Mon Jul 28 20:22:01 2025
  read: IOPS=2018, BW=8075KiB/s (8269kB/s)(237MiB/30004msec)
    clat (nsec): min=0, max=31033k, avg=280464.07, stdev=1367191.26
     lat (nsec): min=0, max=31033k, avg=280494.86, stdev=1367190.30
    clat percentiles (nsec):
     |  1.00th=[       0],  5.00th=[       0], 10.00th=[       0],
     | 20.00th=[    1004], 30.00th=[    1004], 40.00th=[    5984],
     | 50.00th=[  337920], 60.00th=[  350208], 70.00th=[  358400],
     | 80.00th=[  370688], 90.00th=[  382976], 95.00th=[  399360],
     | 99.00th=[  460800], 99.50th=[  493568], 99.90th=[29753344],
     | 99.95th=[30539776], 99.99th=[30801920]
   bw (  KiB/s): min= 4000, max=19366, per=100.00%, avg=8095.53, stdev=3215.41, samples=59
   iops        : min= 1000, max= 4841, avg=2023.64, stdev=803.79, samples=59
  write: IOPS=2013, BW=8055KiB/s (8248kB/s)(236MiB/30004msec); 0 zone resets
    clat (nsec): min=0, max=201387k, avg=214882.62, stdev=1435284.47
     lat (nsec): min=0, max=201387k, avg=214965.36, stdev=1435281.92
    clat percentiles (nsec):
     |  1.00th=[       0],  5.00th=[       0], 10.00th=[    1004],
     | 20.00th=[    1004], 30.00th=[    1004], 40.00th=[    1004],
     | 50.00th=[    1004], 60.00th=[    1004], 70.00th=[    2008],
     | 80.00th=[  626688], 90.00th=[  675840], 95.00th=[  716800],
     | 99.00th=[  757760], 99.50th=[  774144], 99.90th=[29229056],
     | 99.95th=[30277632], 99.99th=[30801920]
   bw (  KiB/s): min= 4039, max=20150, per=100.00%, avg=8077.54, stdev=3247.96, samples=59
   iops        : min= 1009, max= 5037, avg=2019.03, stdev=811.96, samples=59
  lat (nsec)   : 2=10.00%
  lat (usec)   : 2=41.18%, 4=5.76%, 10=0.55%, 20=0.01%, 50=0.01%
  lat (usec)   : 500=29.78%, 750=11.90%, 1000=0.64%
  lat (msec)   : 2=0.01%, 4=0.01%, 50=0.18%, 250=0.01%
  cpu          : usr=0.22%, sys=4.55%, ctx=51603, majf=0, minf=10
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=60571,60421,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=8075KiB/s (8269kB/s), 8075KiB/s-8075KiB/s (8269kB/s-8269kB/s), io=237MiB (248MB), run=30004-30004msec
  WRITE: bw=8055KiB/s (8248kB/s), 8055KiB/s-8055KiB/s (8248kB/s-8248kB/s), io=236MiB (247MB), run=30004-30004msec
Tiêu chí Giá trị
IOPS Read: 2,018, Write: 2,013
Throughput Read: 8,075 KiB/s, Write: 8,055 KiB/s
Độ trễ trung bình Read: 280 µs, Write: 215 µs
CPU sử dụng usr: 0.22%, sys: 4.55%

b. Throughput (Block size = 1M)

shell> fio --name=seqrw --rw=readwrite --size=2G --directory=. --bs=1M --numjobs=1 --time_based --runtime=30s --iodepth=1 --direct=1 --group_reporting
seqrw: (g=0): rw=rw, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
fio-3.40
Starting 1 process
Jobs: 1 (f=1): [M(1)][100.0%][r=15.0MiB/s,w=21.0MiB/s][r=15,w=21 IOPS][eta 00m:00s]
seqrw: (groupid=0, jobs=1): err= 0: pid=20976: Mon Jul 28 20:22:46 2025
  read: IOPS=17, BW=17.4MiB/s (18.2MB/s)(522MiB/30011msec)
    clat (usec): min=120, max=28853, avg=26030.84, stdev=1176.87
     lat (usec): min=120, max=28853, avg=26031.05, stdev=1176.87
    clat percentiles (usec):
     |  1.00th=[25297],  5.00th=[25560], 10.00th=[25822], 20.00th=[25822],
     | 30.00th=[25822], 40.00th=[26084], 50.00th=[26084], 60.00th=[26084],
     | 70.00th=[26346], 80.00th=[26346], 90.00th=[26346], 95.00th=[26346],
     | 99.00th=[26870], 99.50th=[27132], 99.90th=[28967], 99.95th=[28967],
     | 99.99th=[28967]
   bw (  KiB/s): min=10138, max=30415, per=100.00%, avg=17841.95, stdev=4428.09, samples=59
   iops        : min=    9, max=   29, avg=16.75, stdev= 4.38, samples=59
  write: IOPS=18, BW=18.7MiB/s (19.6MB/s)(561MiB/30011msec); 0 zone resets
    clat (usec): min=25522, max=30689, avg=29248.98, stdev=1115.10
     lat (usec): min=25549, max=30704, avg=29267.23, stdev=1114.53
    clat percentiles (usec):
     |  1.00th=[26346],  5.00th=[26870], 10.00th=[27657], 20.00th=[28181],
     | 30.00th=[28705], 40.00th=[29230], 50.00th=[29754], 60.00th=[30016],
     | 70.00th=[30016], 80.00th=[30278], 90.00th=[30278], 95.00th=[30278],
     | 99.00th=[30540], 99.50th=[30540], 99.90th=[30802], 99.95th=[30802],
     | 99.99th=[30802]
   bw (  KiB/s): min= 8110, max=26360, per=100.00%, avg=19145.46, stdev=3910.75, samples=59
   iops        : min=    7, max=   25, avg=18.03, stdev= 3.85, samples=59
  lat (usec)   : 250=0.09%
  lat (msec)   : 50=99.91%
  cpu          : usr=0.04%, sys=0.53%, ctx=8660, majf=0, minf=10
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=522,561,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=17.4MiB/s (18.2MB/s), 17.4MiB/s-17.4MiB/s (18.2MB/s-18.2MB/s), io=522MiB (547MB), run=30011-30011msec
  WRITE: bw=18.7MiB/s (19.6MB/s), 18.7MiB/s-18.7MiB/s (19.6MB/s-19.6MB/s), io=561MiB (588MB), run=30011-30011msec
Tiêu chí Giá trị
Throughput Read: 17.4 MiB/s, Write: 18.7 MiB/s
IOPS Read: 17, Write: 18
Độ trễ Read: \~26ms, Write: \~29ms

Nhận xét:
Thiết bị chuyển từ Type C sang USB A bị giới hạn nghiêm trọng hiệu năng, chỉ đạt \~17-18MB/s throughput và \~2.000 IOPS – giảm hơn 5 lần so với kết nối trực tiếp qua Type C. Điều này phản ánh rõ ràng việc nghẽn cổ chai do giao tiếp USB-A hoặc chipset chuyển đổi.


3. Kết luận

Thông số Type C (UGREEN) USB A (chuyển đổi)
Max Throughput 154 MiB/s 18.7 MiB/s
Max IOPS \~9,938 \~2,018
Latency Thấp Cao (gấp \~4-7 lần)
Hiệu năng Tốt nhất Giảm đáng kể
  • Khuyến nghị: Để đảm bảo tốc độ truyền tối đa và hiệu năng I/O cao nhất cho ổ cứng SSD, nên sử dụng giao tiếp trực tiếp Type C thay vì chuyển sang USB A.

4. Phụ lục: Cấu hình phần mềm và thiết bị

  • Phần mềm: fio v3.40
  • Thiết bị kiểm thử: MacBook Pro M1 (2020), 16GB RAM
  • Ổ cứng: Samsung SSD 240GB SATA 6Gbps (2.5”)
  • Hệ điều hành: macOS