1 điểm bởi GN⁺ 2025-03-15 | 1 bình luận | Chia sẻ qua WhatsApp

Thiết bị IO và độ trễ

  • Thiết bị lưu trữ không bay hơi là một thành phần cốt lõi của các hệ thống máy tính hiện đại, có thể lưu dữ liệu ngay cả khi tắt nguồn. Không giống các thiết bị lưu trữ bay hơi như thanh ghi CPU, bộ nhớ đệm CPU và RAM, chúng không cần nguồn điện liên tục.

Thiết bị lưu trữ băng từ

  • Từ những năm 1950, máy tính đã sử dụng ổ băng từ để lưu trữ số không bay hơi. Băng từ phù hợp để lưu các chuỗi dữ liệu dài, và thích hợp trong những tình huống cần lưu trữ an toàn khối lượng dữ liệu lớn nhưng không cần đọc thường xuyên.
  • Băng từ có chi phí thấp và tuổi thọ dài, nên vẫn được sử dụng tại các kho dữ liệu quy mô lớn như CERN và AWS.

Ổ đĩa cứng (HDD)

  • Ổ đĩa cứng cung cấp khả năng truy cập dữ liệu nhanh hơn so với băng từ, và lưu dữ liệu trên các đĩa kim loại hình tròn. Toàn bộ bề mặt của đĩa luôn sẵn sàng sử dụng, giúp giảm độ trễ khi đọc và ghi dữ liệu.
  • HDD hỗ trợ xếp hàng lệnh, cho phép thực thi nhiều lệnh song song.

Ổ trạng thái rắn (SSD)

  • Ổ trạng thái rắn đọc và ghi dữ liệu bằng điện tử mà không có bộ phận cơ khí, đồng thời sử dụng NAND flash để cung cấp lưu trữ không bay hơi.
  • SSD có thể tối ưu hiệu năng thông qua xử lý song song và garbage collection. Cách sắp xếp dữ liệu có thể ảnh hưởng đến hiệu năng.

Lưu trữ trên đám mây

  • Việc chuyển sang đám mây đã làm thay đổi hiệu năng IO, và nhiều công ty đang di chuyển máy chủ cùng hệ thống cơ sở dữ liệu lên đám mây.
  • Trong môi trường đám mây, tách biệt lưu trữ và điện toán là cách làm phổ biến; điều này mang lại tính an toàn cho dữ liệu và sự linh hoạt, nhưng có thể gây suy giảm hiệu năng.

Tách biệt lưu trữ và điện toán

  • Trước đây, máy chủ thường sử dụng thiết bị lưu trữ không bay hơi được kết nối trực tiếp, nhưng trên đám mây thì cách kết nối lưu trữ qua mạng là phổ biến hơn.
  • Lưu trữ kết nối qua mạng mang lại độ an toàn cho dữ liệu, nhưng có thể ảnh hưởng tiêu cực đến hiệu năng IO.

Lưu trữ cục bộ vs lưu trữ qua mạng

  • SSD NVMe cục bộ cung cấp tốc độ IO rất nhanh và có độ trễ thấp hơn so với lưu trữ kết nối qua mạng.
  • Lưu trữ kết nối qua mạng có thể có các giới hạn đối với tác vụ IO, và điều này có thể dẫn đến suy giảm hiệu năng.

Giải pháp: Metal

  • Metal là giải pháp do PlanetScale cung cấp, sử dụng các ổ SSD NVMe kết nối trực tiếp để mang lại hiệu năng và khả năng mở rộng vượt trội.
  • Cụm Metal về cơ bản gồm một máy chủ chính và hai bản sao, bảo đảm độ bền dữ liệu và cho phép mở rộng dung lượng lưu trữ dễ dàng.
  • Cơ sở dữ liệu Metal không có các giới hạn nhân tạo đối với tác vụ IO và có thể thực hiện các tác vụ IO với độ trễ tối thiểu.

1 bình luận

 
GN⁺ 2025-03-15
Bình luận trên Hacker News
  • Nhận xét rằng tác giả blog hẳn đã rất thích thú khi viết bài này. Họ đã dùng hàng nghìn dòng JavaScript để tạo ra các hình ảnh trực quan tương tác
  • Cho biết bản thân từ lâu đã ủng hộ SQLite+NVMe. Đây là một mẫu hình mới, mở ra khả năng giải quyết vấn đề mà không cần mở rộng theo chiều ngang
    • Với các vấn đề hiệu năng, độ trễ là yếu tố quan trọng nhất
    • Điều này càng quan trọng hơn, đặc biệt khi phải xử lý tuần tự
    • Chạy SQLite trên NVMe mang lại lợi thế về độ trễ mà các nhà cung cấp khác không thể đem lại
    • Trong phần lớn các trường hợp sử dụng thực tế, chạy trong bộ nhớ không mang lại lợi ích lớn hơn đáng kể so với độ bền dữ liệu của NVMe
  • Khen bài viết giàu thông tin đến mức gần như quên mất đây là nội dung quảng bá sản phẩm. Nhắc đến phần hình ảnh trực quan và tính tương tác rất xuất sắc
  • Khi xem hoạt họa về disk IO, đã nhớ đến Melvin Kaye
    • Mel không viết vòng lặp trễ thời gian
    • Tương tự ngay cả khi Flexowriter cần độ trễ giữa các ký tự đầu ra
    • Ông sắp xếp các lệnh trên trống sao cho mỗi khi cần thì chúng nằm ngay sau đầu đọc
    • Trống phải quay trọn một vòng để tìm lệnh kế tiếp
  • Nói rằng blog rất hay. Chỉ ra rằng cloud storage nhìn chung "chậm một cách bất thường"
    • Gần đây họ đã thêm hỗ trợ lưu chỉ mục tăng dần trên S3/object storage
    • Lý do họ dùng NVMe lâu hơn là nhờ các lợi thế hiệu năng đã nêu trong bài trước
    • Bày tỏ mong muốn có ai đó cách tân lĩnh vực này bằng một giải pháp tốt hơn
  • Chỉ ra một điểm về distributed storage mà bài này chưa đề cập đủ
    • Một số hệ thống về cơ bản không hỗ trợ replication
    • Cassandra cluster và MySQL có thể làm master-slave replication, nhưng nhiều hệ thống thì không
    • Khi dùng NVMe storage trên cloud, cần tôn trọng chu kỳ bảo trì và các đợt drain do cloud khởi tạo
    • Nếu tách storage khỏi compute, nhà vận hành cloud có thể di chuyển compute khi cần
    • Vì dữ liệu độc lập với compute, nhà vận hành cloud có thể quản lý hệ thống dữ liệu và các đợt drain
  • Metal trông rất ấn tượng. Nhắc lại rằng ở công ty cũ, khi họ cố dùng local SSD của instance trên GCP thì đã gặp vấn đề độ tin cậy nghiêm trọng
    • Có tình trạng các block trên thiết bị bị mất dữ liệu
    • Tò mò không biết tình hình này đã được cải thiện chưa
    • Hỏi đang dùng loại machine nào
    • Nhắc đến giải pháp dùng network disk của Discord
  • PlanetScale Metal có vẻ rất vững chắc. Lúc nào cũng thú vị khi thấy độ trễ giảm mạnh trong các bản phát hành
  • Đây là một bài viết rất xuất sắc. Phần trực quan hóa random write được làm cực kỳ tốt
    • Một vấn đề khác của network-attached storage trên cloud là giới hạn IOPS
    • Nhiều nhà cung cấp cloud, gồm cả AWS và Google Cloud, dùng mô hình này và giới hạn số lượng thao tác IO có thể gửi đi
    • Nếu storage được gắn trực tiếp vào compute instance thì không có giới hạn nhân tạo với các thao tác IO
    • Có thể đọc và ghi nhanh đến mức phần cứng cho phép
    • Thắc mắc liệu giới hạn "IOPS" có phải là giới hạn áp cho một loại network traffic cụ thể nào đó không
    • Hỏi liệu nó có ám chỉ network traffic của volume EBS hay không
    • Tò mò liệu có thể tiết kiệm chi phí hay không, có phải do kiểu arbitrage kỳ lạ của AWS, hay do hiệu quả từ việc giảm bớt networking cho EBS
    • Thấy rất rõ việc đặt storage và compute trên cùng một máy mang lại lợi thế về độ trễ
    • Tò mò liệu điều đó cũng có lợi về throughput trên chi phí hay không
  • Thắc mắc các nhà cung cấp cơ sở dữ liệu "serverless" quảng bá truy cập "độ trễ thấp" bằng cách nào
    • Họ dùng object storage như S3, mà theo dự đoán thì có độ trễ tệ hơn nhiều so với network storage
    • Nhắc rằng họ đã xây dựng một lớp caching và nói rằng sẽ giữ dữ liệu trên NVMe gắn cục bộ