Load averages là 3 thông số hiện ra khi sử dụng lệnh uptime và top, nó có dạng như: 0.09 0.01 0.05Hầu hết mọi người đều thắc mắc rằng, 3 thông số load average mang ý nghĩa gì? 3 thông số này thể hiện giá trị trung bình trong 3 khoảng thời gian: 1, 5, 15 phút, số nào thấp hơn thì thể hiện load average tốt hơn. Số cao hơn thể hiện rằng có một vấn đề hoặc một máy bị quá tải. Nhưng, ngưỡng cho những giá trị đó là gì? Những yếu tố nào cấu thành nên một giá trị load average tốt hoặc xấu. Khi nào thì bạn nên quan tâm đến giá trị load average và khi nào bạn nên dành thời than để sửa chữa nó cành sớm càng tốt nếulà giá trị xấu.Đầu tiên, sơ qua về giá trị load average có ý nghĩa gì. Chúng ta sẽ bắt đầu với một khái niệm đơn giản: Một máy với một bộ xử lý đơn lõi (singlecore processor).
Trang 1LINUX CPU LOAD
Load averages là 3 thông số hiện ra khi sử dụng lệnh uptime và top, nó có dạng như:
Hầu hết mọi người đều thắc mắc rằng, 3 thông số load average mang ý nghĩa gì? 3 thông số này thể hiện giá trị trung bình trong 3 khoảng thời gian: 1, 5, 15 phút, số nào thấp hơn thì thể hiện load average tốt hơn Số cao hơn thể hiện rằng có một vấn đề hoặc một máy bị quá tải Nhưng, ngưỡng cho những giá trị đó là gì? Những yếu tố nào cấu thành nên một giá trị load average tốt hoặc xấu Khi nào thì bạn nên quan tâm đến giá trị load average và khi nào bạn nên dành thời than để sửa chữa nó cành sớm càng tốt nếulà giá trị xấu
Đầu tiên, sơ qua về giá trị load average có ý nghĩa gì Chúng ta sẽ bắt đầu với một khái niệm đơn giản: Một máy với một bộ xử lý đơn lõi (single-core processor)
Tương tự như giao thông
Một CPU đơn lõi giống như một làn đường trong giao thông Hãy tưởng tượng rằng
“Bạn là một người điều hướng giao thông ở cầu, thỉnh thoảng cây cầu của bạn quá nhiều những chiếc xe xếp hàng đợi qua cầu Bạn muốn cho mọi người biết lượng phương tiện trên chiếc cầu của bạn nhiều như thế nào Một giá trị tốt sẽ chỉ cho bạn có bao nhiêu chiếc xe đang chờ đợi tại một thời gian cụ thể Nếu không có chiếc xe nào đang đợi, lái
xe đến và có thể cho xe chạy qua cầu ngay Nếu những chiếc xe bị quay lại đồng nghĩa với lái xe biết xe bị trì hoãn
Vì vậy, người điều hướng ở cầu, hệ thống đánh số nào mà bạn sẽ sử dụng:
0.00 có nghĩa là không có chiếc xe nào trên cầu Trên thực tế, giữa 0.00
và 1.00 có nghĩa là không có chiếc xe nào bị trì hoãn, những chiếc xe đi tới và có thể qua cầu ngay
Trang 2 1.00 có nghĩa là cây cầu đang hoạt động hết khả năng Mọi thữ vẫn diễn
ra tốt, nhưng những chiếc xe chở nặng sẽ đi chậm hơn
> 1.00 có nghĩa là đang có ùn tắc diễn ra 2.00 có nghĩa là có 2 làn xe tổng cộng – một làn xe trên cầu và 1 làn đang đợi 3.00 có nghĩa là có tổng cộng 3 làn xe, một làn ở trên cầu và 2 làn đợi
Điều này về cơ bản giống như CPU load là gì? Những chiếc xe là những tiến trình
sử dụng CPU (đi qua cầu) hoặc xếp hàng đợi để sử dụng CPU Unix đề cập đến điều này như độ dài hàng đợi: tổng số tiến trình, cái mà hiện tại chạy cộng với số tiến trình đang chờ
Giống như người điều hướng cầu, bạn muốn xe của bạn (tiến trình) không bao giờ phải đợi Vì vậy CPU load của bạn nên mang giá trị lý tưởng là 1.00 Vẫn ổn nếu như CPU load tạm thời > 1 nhưng khi giá trị CPU load này luôn >1.00 thì là một điều đáng lo lắng
Giá trị lý tưởng 1.00
Giá trị CPU load là 1.00 có nghĩa rằng hàng đợi không có chỗ trống Trong thực tế, nhiều quản trị viên sẽ quan tâm tới giá trị 0.70:
Luật “Need to Look into it” của Thumb: Nếu giá trị load average trên 0.70 thì đã đến lúc quản trị viên cần kiểm tra lại hệ thống trước khi mọi tứ tồi tệ hơn
Luật “Fix this now” của Thumb: Nếu giá trị load average trên 1.00, thì điều cẩn thiết là tìm ra vấn đề và sửa nó ngay
Trang 3Luật “Arrgh, it’s 3AM WTF?” của Thumb: Nếu load average trên 5.00, bạn đang gặp một vấn đề nghiêm trọng, máy của bạn có thể bị treo hoặc bị chậm và điều này sẽ ảnh hưởng đến công việc của bạn
Multi-processors là gì? Load average = 3 nhưng mọi thứ đều chạy tốt
Có một hệ thống 4 bộ xử lý (quad-processor) là hệ thống mà nó vẫn hoạt động tốt với giá trị load average 3.00
Trong hệ thống xử lý đa tiến trình, giá trị load liên quan đến số tiến trình lõi có sẵn
“100% sử dụng” là đánh dấu giá trị load 1.00 cho hệ thống lõi đơn, 2.00 cho hệ thống lõi kép và 4.00 cho hệ thống lõi tứ, …
Nếu chúng ta quay trởi lại sự tương đồng với cây cầu, giá trị 1.00 thực sự có nghĩa là “1 làn phương tiện” Trên 1 làn cầu, điều đó có nghĩa nó đã bị đầy Trên một cây cầu có 2 làn, giá trị 1.00 có nghĩa là chỉ một làn đường đầy nên phương tiện có thể đi vào làn còn lại
Giống với CPUs: một giá trị load =1.00 là 100% CPU sử dụng trên máy đơn lõi Còn trên máy lõi kép, giá trị load là 2.00 nghĩa là CPU 100% sử dụng
Đa lõi và đa tiến trình
Nhằm mục đích về hiệu suất, một cái máy với bộ xử lí lõi kép về cơ bảng tương đương với một máy có có 2 bộ xử lí trên một lõi Có rất nhiều chính sách khôn ngoan liên quan đến dung lượng bộ nhớ cache, tấn số xử lí giữa các bộ xử lý Mặc dù có nhiều điểm tốt hơn, cho mục đích kích thước của giá trị CPU load, tổng số lõi là những vấn đề quan trọng, bất kể có bao nhiêu bộ xử lí mà các lõi trải đều
2 luật của Thumb
Số lõi = max load: Trên hệ thống đa lõi, giá trị load không nên vượt quá số lõi có sẵn
“cores is cores” : Cách mà lõi được trải trên CPU không phải vấn đề 2 lõi tứ = 4 lõi kép
= 8 lõi đơn Nó là tất cả 8 lõi
Bringing it HOME
Hãy nhìn vào giá trị load average trong output của lệnh uptime:
Trang 4Nó chạy trên CpU lõi kép, vì vậy chúng ta có nhiều khoảng trống hơn Không có gì phải suy nghĩ về giá trị này cho đến khi chúng là 1.7 hoặc hơn
Bây giờ, 3 giá trị đo là gì? 0.65 là tốc độ load trung bình trong 1 phút cuối, 0.42 là tốc độ load trung bình trong 5 phút cuối, 0.36 là tốc độ load trung bình trong 15 phút cuối Những điều này mang tới cho chúng ta câu hỏi:
Giá trị trung bình nào cần xem xét: 1.5 hay 15 phút?
Đối với những con số mà chúng ta nói về (1.00 – fix it now), bạn nên nhìn vào giá trị trung bình trong 5 và 15 phút Nếu máy của bạn có giá trị load trung bình trên 1.0 trên 1 phút, máy của bạn vẫn hoạt động tốt Khi giá trị load trung bình trong 15 phút lớn hơn 1.0 liên tục thì bạn cần chỉnh sửa (Rõ ràng, như chũng ta đã biết, điều chỉnh những con số này thành số bộ xử lý của hệ thống bạn)
Vì vậy, số lõi thì quan trọng để thông dịch load average … Làm thế nào tôi biết có bao nhiêu lõi trong hệ thống của tôi?
cat /proc/cpuinfo
File này chứa thông tin của mỗi bộ xử lý trong hệ thống của bạn Chú ý: không có sẵn trên OSX, Google for alternatives Để đếm số bộ xử lý, chạy nó bằng lệnh grep và từ đếm grep ‘model name’ /proc/cpuinfo | wc -l
Trang 5SSH passphrase
Một passphrase giống như một password Tuy nhiên, một password nói chung liên quan một thứ gì đó được sử dụng nhằm xác thực hoặc đăng nhập vào hệ thống Một password nói chung liên quan một bí mật được sử dụng để bảo vệ một mã hóa key Thông thường, một key mã hóa thực sự được suy ra từ passphrase và sử dụng để mã hóa tài nguyên được bảo vệ
Nó nên là kí tự khó đoán
Một passphrase tốt nên có ít nhất 15 kí tự, tốt nhất là 20 kí tự và khó có thể đoán được
Nó nên bao gồm kí tự thường, kí tự hoa, số và tốt nhất là có ít nhất một dấu chấm Không phần nào của passphrase nên phát sinh từ thông tin cá nhân của người dùng hoăc gia đình của họ
Thỉnh thoảng cần tạo mật khẩu và passphrase một cách random tự động Chúng ta còn gợi ý một tạo ra một password/ passphrase an toàn dựa trên trình duyệt
Bảo vệ một khóa cá nhân
Mục đích của passphrase là thường xuyên mã hóa private key Điều này tạo ra key file bởi chính nó vô dụng với attacker Nó thì không thông dụng cho các file bị rò rỉ từ backups hoặc phần cứng không dùng tới và hacker thông thường tìm kiếm các file từ hệ thống bị xâm nhập
Để sử dụng key mã hóa, passphrase vẫn cần thiết Một cách khác chúng có 2 yếu tố tách rời của quá trình xác thực
Bảo vệ SSH keys
SSH key được sử dụng để xác thực người dùng trong hệ thống thông tin SSh key chính
là 1 private key, private key tiếp tục được mã hóa sử dụng mã hóa đối xứng được suy ra
từ một passphrase Sự bắt nguồn của key là sử dụng một hàm hash
Passphrase thông thường sử dụng cho key thuộc về người dùng có tương tác Người dùng
sử dụng gợi ý mạnh mẽ nhằm giảm mối đe dọa với lỗ hổng key ngẫu nhiên từ backups hoặc đĩa cứng không sử dụng
Trang 6Trong thực tế, tuy nhiên hầu hết SSH key đều tạo ra mà không có passphrase Không người nào gõ bất cứ gì cho key được sử dụng để xác thực Passphrase sẽ phải được mã hóa cứng trong một script hoặc được lưu trữ trong một vài loại vault, nơi mà nó có thể được tìm kiếm bởi một đoạn sccript Một attacker với đủ quyền có thể dễ dàng đánh lừa một hệ thống như vậy Như vậy sẽ có ít sự bảo vệ cho sự tự động hóa
Hơn 90% SSH key trong hầu hết các tổ chức lớn mà không có passphrase Tuy nhiên, điều này dựa trên tổ chức và chính sách an ninh của họ
Sử dụng công cụ quản lý SSH đúng là một gợi ý để đảm bảo truy cập chính xác quy trình cấp phép và dừng tiến trình, thường xuyên thay đổi key và làm đúng theo chính sách SSH key có thể được tạo ra bởi công cụ như ssh-keygen và PuTTYgen Những công cụ này đòi hỏi một passphrase để mã hóa cùng với key
PGP / GPG Private Key Protection
Private key được sử dụng trong công cụ mã hóa email như PGP để đảm bảo an toàn theo cách tương tự Như ứng dụng đặc thù sử dụng private key cho chữ ký số và giải mã email
và file