- vừa được xem lúc

Chi tiết về cgroups

0 0 12

Người đăng: Văn Lê Đình

Theo Viblo Asia

cgroups là gì?

cgroups (Control Groups) là một tính năng của Linux kernel cho phép quản trị viên hệ thống quản lý và giám sát tài nguyên hệ thống được sử dụng bởi các nhóm tiến trình. Tài nguyên này bao gồm CPU, bộ nhớ, I/O đĩa, và mạng. Đây là một công cụ mạnh mẽ giúp đảm bảo các tiến trình không chiếm dụng quá nhiều tài nguyên hệ thống, gây ảnh hưởng đến các tiến trình khác.

Chi Tiết và Chức Năng của cgroups

Giới Hạn Tài Nguyên (Resource Limiting)

  • CPU: Bạn có thể giới hạn số lượng CPU mà một nhóm tiến trình có thể sử dụng. Ví dụ, bạn có thể cấu hình để một nhóm tiến trình chỉ sử dụng tối đa 50% của một CPU.
  • Bộ Nhớ: Bạn có thể giới hạn dung lượng bộ nhớ mà một nhóm tiến trình có thể sử dụng. Nếu nhóm này sử dụng nhiều hơn dung lượng được phép, hệ thống có thể giết các tiến trình để giải phóng bộ nhớ.
  • I/O Đĩa: Bạn có thể giới hạn tốc độ đọc/ghi I/O của đĩa mà nhóm tiến trình có thể thực hiện.
  • Mạng: Bạn có thể giới hạn băng thông mạng mà nhóm tiến trình có thể sử dụng.

Cách Ly Tài Nguyên (Resource Isolation)

  • cgroups đảm bảo rằng tài nguyên của một nhóm tiến trình không bị ảnh hưởng bởi các nhóm tiến trình khác. Điều này giúp duy trì hiệu suất ổn định cho các ứng dụng quan trọng.

Giám Sát Tài Nguyên (Resource Monitoring)

  • cgroups cho phép giám sát việc sử dụng tài nguyên của các nhóm tiến trình. Bạn có thể kiểm tra lượng CPU, bộ nhớ, I/O đĩa mà các tiến trình đang sử dụng và đưa ra các điều chỉnh cần thiết.

Nhóm Tiến Trình (Process Groups) Là Gì?

Một nhóm tiến trình là một tập hợp các tiến trình được quản lý chung bởi cgroups. Các tiến trình này có thể là các chương trình hoặc dịch vụ đang chạy trên hệ thống. Nhóm tiến trình cho phép bạn áp dụng các giới hạn và kiểm soát tài nguyên đồng nhất cho tất cả các tiến trình trong nhóm.

Cách Hoạt Động của cgroups

cgroups tổ chức các tiến trình thành các nhóm và áp dụng các giới hạn tài nguyên cho từng nhóm này. Các bước cơ bản để sử dụng cgroups bao gồm:

  1. Tạo Một cgroup Mới: Bạn tạo một cgroup mới bằng cách tạo một thư mục trong hệ thống tệp ảo của cgroups. Ví dụ:

    mkdir /sys/fs/cgroup/memory/my_cgroup
    
  2. Giới Hạn Bộ Nhớ Cho cgroup: Bạn có thể giới hạn dung lượng bộ nhớ mà cgroup này có thể sử dụng. Ví dụ:

    echo 500M > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
    
  3. Thêm Tiến Trình Vào cgroup: Bạn thêm một tiến trình vào cgroup bằng cách ghi PID (Process ID) của tiến trình đó vào tệp cgroup.procs. Ví dụ:

    echo <PID> > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs
    

Ví Dụ Thực Tế

Giả sử bạn có một máy chủ web và một cơ sở dữ liệu chạy trên cùng một máy chủ. Bạn muốn đảm bảo rằng cơ sở dữ liệu không sử dụng quá nhiều bộ nhớ, ảnh hưởng đến hiệu suất của máy chủ web. Bạn có thể sử dụng cgroups để giới hạn bộ nhớ mà cơ sở dữ liệu có thể sử dụng như sau:

  1. Tạo cgroup cho cơ sở dữ liệu:

    mkdir /sys/fs/cgroup/memory/db_group
    
  2. Giới hạn bộ nhớ cho cơ sở dữ liệu:

    echo 1G > /sys/fs/cgroup/memory/db_group/memory.limit_in_bytes
    
  3. Thêm tiến trình cơ sở dữ liệu vào cgroup:

    echo <PID của cơ sở dữ liệu> > /sys/fs/cgroup/memory/db_group/cgroup.procs
    

Kết Luận

cgroups là một công cụ quan trọng trong việc quản lý tài nguyên hệ thống trong Linux. Nó giúp đảm bảo các tiến trình không chiếm dụng quá nhiều tài nguyên, duy trì hiệu suất ổn định và bảo mật. Bằng cách tổ chức các tiến trình thành các nhóm và áp dụng các giới hạn tài nguyên, cgroups cung cấp khả năng kiểm soát chi tiết và hiệu quả cho quản trị viên hệ thống.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đề thi interview DevOps ở Châu Âu

Well. Chào mọi người, mình là Rice - một DevOps Engineers ở đâu đó tại Châu Âu.

0 0 88

- vừa được xem lúc

In calculus, love also means zero.

Mình nhớ hồi năm 2 đại học, thầy giáo môn calculus, trong một giây phút ngẫu hứng, đã đưa ra cái definition này. Lúc đấy mình cũng không nghĩ gì nhiều.

0 0 65

- vừa được xem lúc

Chuyện thay đổi

Thay đổi là một thứ gì đó luôn luôn đáng sợ. Cách đây vài tháng mình có duyên đi làm cho một banking solution tên là X.

0 0 47

- vừa được xem lúc

Pet vs Cattle - Thú cưng và gia súc

Khái niệm. Pets vs Cattle là một khái niệm cơ bản của DevOps. Bài viết này sẽ nói về sự phát triển của các mô hình dịch vụ từ cốt lõi Pets and Cattle. 1.

0 0 34

- vừa được xem lúc

Git workflow được Google và Facebook sử dụng có gì hay ho

Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git.

0 0 85

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 113