+3

THỜI GIAN THỰC THI CỦA CÁC COMPUTER OPERATIONS ĐIỂN HÌNH

Năm 2010, trong bài chia sẻ về những bài học từ việc xây dựng Software Systems ở Google với sinh viên Đại học Stanford, Tiến sĩ Jeff Dean - Trưởng khoa của Google's School of Infrastructure Wizardry, có vai trò quan trọng trong nhiều hệ thống ở Google như: TensorFlow, ProtocolBuffers, Bigtable, MapReduce, LevelDB, ... - đã tiết lộ thời gian thực thi các computer operations điển hình.

Mặc dù các con số trong đó có thể đã không còn đúng với những máy tính mạnh mẽ ngày nay, nhưng chúng ta vẫn có thể dựa vào những con số đó để dễ dàng hình dung về sự nhanh và chậm khác nhau của các computer operations.

Operation Thời gian thực thi
L1 cache reference 0,5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns
Mutex lock/unlock 100 ns
Main memory reference 100 ns
Compress 1K bytes with Zippy 10.000 ns = 10 μs
Send 2K bytes over 1 Gbps network 20.000 ns = 20 μs
Read 1 MB sequentially from memory 250.000 ns = 250 μs
Round trip within same datacenter 500.000 ns = 500 μs
Disk seek 10.000.000 ns = 10 ms
Read 1 MB sequentially from network 10.000.000 ns = 10 ms
Read 1 MB sequentially from disk 30.000.000 ns = 30 ms
Send packet CA->Netherlands->CA 150.000.000 ns = 150 ms

LƯU Ý

ns = nanosecond, μs = microsecond, ms = millisecond

1 ns = 10⁻⁹ seconds

1 μs= 10⁻⁶ seconds = 1.000 ns

1 ms = 10⁻³ seconds = 1.000 μs = 1.000.000 ns

Sau đó, một software engineer của Google đã xây dựng một công cụ để visualize các số liệu trên của Tiến sĩ Jeff Dean.

THỜI GIAN THỰC THI CÁC COMPUTER OPERATIONS ĐIỂN HÌNH

Bằng cách phân tích các số liệu này, chúng ta có thể dễ dàng hiểu hơn về các lý thuyết mà các thầy cô trên trường hay nhắc đến:

  • Tốc độ đọc dữ liệu từ memory nhanh hơn ổ cứng (disk) nhiều như thế nào.

    • Read 1 MB sequentially from memory (250.000 ns = 250 μs)
    • Read 1 MB sequentially from disk (30.000.000 ns = 30 ms).
  • Hạn chế thực hiện tìm kiếm trên ổ cứng nhất có thể.

    • Disk seek (10.000.000 ns = 10 ms)
  • Các thuật toán nén dữ liệu (compress) cơ bản thực hiện rất nhanh. Hãy thực hiện nén dữ liệu trước khi truyền qua internet nếu có thể.

    • Compress 1K bytes with Zippy (10.000 ns = 10 μs)
  • Các Data Center thường được đặt ở các region khác nhau, vì vậy sẽ có độ trễ giữa thời gian truyền tin giữa chúng.

    • Send packet CA->Netherlands->CA (150.000.000 ns = 150 ms)

LỜI NHẮN

Bạn có thể tham khảo thêm những bài viết trong series "System Design - Thiết kế Hệ thống" của mình trên blog này nhé. Hi vọng kiến thức này hữu ích với bạn.

Follow mình trên Facebook "CLB Lập trình - THPT Ngọc Tảo" hoặc kênh Youtube "Tờ Mờ Sáng học Lập trình" để cùng nhau học tập, chia sẻ những kiến thức công nghệ và lập trình hoàn toàn miễn phí nhé!

Facebook CLB Lập trình - THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/

Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsangdev

Hẹn gặp lại 👋


BẠN CÓ THỂ ĐỌC THÊM

Clean Architecture: A Craftsman’s Guide to Software Structure and Design - Robert C. Martin

Designing Data – Insensitive applications - Martin Kleppmann

System Analysis and Design - Alan Dennis, Barbara Haley Wixom, Roberta M. Roth

System Design Interview - Alex Xu

Modern Systems Analysis and Design - Joseph Valacich, Joey George

Head First Design Patterns - Eric Freeman, Elisabeth Robson


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí