Linux /etc/security/limits.conf giải thích


9

Bất cứ ai cũng có thể giải thích (hoặc biết về một nguồn) cung cấp chi tiết về các mục trong giới hạn. Trang người đàn ông không cung cấp nhiều chi tiết.

Ví dụ: nó nói:

rtprio 
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher) 

priority 
the priority to run user process with (negative values boost process priority) 

Những cái này khác nhau như thế nào? Họ có thể lấy những giá trị nào? Họ mặc định làm gì?

Một số mục rõ ràng, nhưng tôi có thể tìm thấy giải thích tốt hơn ở đâu (giá trị mặc định, phạm vi, ý nghĩa thực sự của chúng, v.v.) của:

data 
maximum data size (KB) 

fsize 
maximum filesize (KB) 

memlock 
maximum locked-in-memory address space (KB) 

cpu 
maximum CPU time (minutes) 

nice 
maximum nice priority allowed to raise to (Linux 2.6.12 and higher) values: [-20,19] 

Điều gì xảy ra khi CPU bị vượt quá? Các quá trình bị giết? Chỉ có một quá trình hoặc toàn bộ người dùng bị cấm sử dụng CPU? Đây là cho một phiên hoặc trong một thời gian tối đa trong mỗi phút?

Tôi đã cố gắng tìm câu trả lời nhưng tất cả những gì tôi có thể tìm thấy là trang một người cung cấp hầu như không có chi tiết nào cả.


Rute là một giới thiệu tuyệt vời về Quản trị Linux - mặc dù nó không cung cấp nhiều chi tiết về giới hạn. Thông tin, nó cho bạn biết nơi tìm thông tin này - rute.2038bug.com/index.html.gz
symcbean

Câu trả lời:


18
rtprio 
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher) 

priority 
the priority to run user process with (negative values boost process priority) 

Tại sao những điều này khác nhau?

Có nhiều lớp khác nhau của bộ lập lịch xử lý trên linux. Cơ chế mặc định (CFQ) về cơ bản cung cấp một lượng thời gian bằng nhau cho mỗi quy trình muốn chạy và xếp hàng các nhiệm vụ có thể chạy theo cách mà mọi người chờ trung bình một khoảng thời gian bằng nhau cho lượt của mình. Một số trường hợp ngoại lệ cho quy tắc này tồn tại nhưng đó là ý tưởng cơ bản.

Một lớp khác của trình lập lịch biểu là trình lập lịch thời gian thực. Thời gian thực có một chút khác biệt, thay vì xếp hàng các nhiệm vụ có thể chạy thành sơ đồ xếp hàng công bằng, quy trình thời gian thực sẽ nhận được thời gian CPU ngay khi quy trình cần thiết, điều này sẽ loại bỏ quy trình chạy từ CPU để nhường chỗ cho 'thời gian thực ' quá trình.

Họ có thể lấy những giá trị nào?

Những gì 'ưu tiên' làm là thay đổi tính độc đáo của quá trình để khi đăng nhập, quy trình chính của bạn bắt đầu ở một mức độ nhất định, bất kỳ quy trình con nào bạn sinh ra cũng bắt đầu ở cùng độ độc đáo.

Điều này có tác dụng làm cho nó có nhiều khả năng được lên lịch để ủng hộ các quá trình cạnh tranh khác và trải nghiệm người dùng có thể được phản hồi / tương tác nhiều hơn cho các giá trị độ đẹp thấp hơn và ít phản ứng / tương tác hơn nếu độ đẹp được nâng lên.

Ví dụ, điều quan trọng đối với người dùng đăng nhập bình thường là có mức độ ưu tiên thấp hơn so với các trình tiện ích có thể phục vụ, hoặc root để có mức độ ưu tiên đăng nhập cao hơn mọi thứ khác.

Đối với thời gian thực, sự tranh chấp được xử lý với trường 'rtprio'. Nếu cả hai bạn đều có hai nhiệm vụ thời gian thực muốn chạy thì giá trị 'rtprio' được sử dụng để xác định quy trình nào sẽ được ưu tiên chọn trước. Một rtprio cao hơn tạo ra các nhiệm vụ ưu tiên cao hơn.

Đặt điều này trong giới hạn.conf cho phép các tác vụ trong thời gian thực được đặt ở một dải ưu tiên cụ thể mà không cần root để đặt giá trị. Điều này không ảnh hưởng đến các tác vụ không được thiết lập để chạy bằng bộ lập lịch thời gian thực.

Giá trị 'đẹp' nên làm giống như 'rtprio' nhưng đối với lập lịch CFQ tiêu chuẩn. Tôi chưa bao giờ thử nó mặc dù. Nó thiết lập quy trình ban đầu được sinh ra khi PAM đang đặt các giới hạn này cho vaule đẹp đó, một người dùng bình thường sau đó có thể đi đến mức tốt đẹp đó hoặc cao hơn mà không cần root để đặt chúng. Nếu bạn không gia hạn một cách rõ ràng, điều đó có nghĩa là tất cả các quy trình được sinh ra từ một vỏ từ thông tin đăng nhập đó (chẳng hạn) sẽ kế thừa giá trị đẹp được đặt trong giới hạn. Biểu mẫu quy trình gốc được tạo ban đầu.

Mặc định là gì?

Các giới hạn 'mặc định' - về mặt kỹ thuật tất cả đều được đặt thành pid 1 trừ khi được đặt rõ ràng, các giới hạn tài nguyên được kế thừa từ quy trình cha, nếu không có giới hạn nào được xác định hoặc ghi đè ở bất kỳ đâu thì kế thừa từ đó initlà mặc định.

Các giá trị khác

data 
maximum data size (KB) 

Khi một quá trình được khởi tạo, nó sẽ cấp phát một số bộ nhớ được gọi là 'phân đoạn dữ liệu' khi quá trình được sao chép vào bộ nhớ, đây là nơi dành cho các quả cầu, có lẽ một số dữ liệu và bộ nhớ khởi tạo khác được phân bổ từ cuộc sống heap. Giới hạn kiểm soát số tiền được phân bổ tối đa mà một quy trình có thể mất.

Sẽ không bao giờ bạn đạt đến giới hạn này vì malloc () hiếm khi sử dụng quá nhiều phân đoạn dữ liệu để lưu trữ dữ liệu.

fsize 
maximum filesize (KB) 

Điều này theo nghĩa đen chỉ đặt kích thước tối đa mà một tệp có thể được ghi vào như với người dùng đó.

memlock 
maximum locked-in-memory address space (KB) 

Gần như tất cả bộ nhớ mà một ứng dụng có được là 'có thể đọc được'. Đó là có thể được trao đổi. Bộ nhớ bị khóa bộ nhớ không bao giờ có thể hoán đổi và vẫn là cư dân. Giá trị này được kiểm soát chặt chẽ bởi vì nó có thể bị mọi người lạm dụng để bỏ đói một hệ thống bộ nhớ và gây ra sự hoán đổi. Nó thường hữu ích với các ứng dụng bảo mật (không bao giờ muốn các trang của chúng bị tráo đổi - và có thể đọc được từ phân vùng trao đổi).

cpu 
maximum CPU time (minutes) 

Điều này thể hiện tổng thời gian mà một quá trình có thể tiêu thụ trên CPU. Một quá trình vượt quá giá trị này bị giết. Lưu ý điều này KHÔNG giống như lượng thời gian đã trôi qua kể từ khi quá trình được bắt đầu. IE giới hạn thời gian sử dụng là 1 phút sẽ mất 1 phút nếu quá trình sử dụng 100% cpu, nhưng 2 phút để tiêu thụ nếu quy trình sử dụng mức sử dụng 50%.

Điều gì xảy ra whpu cpu là vượt quá?

Quá trình được gửi một tín hiệu tiêu diệt SIGXCPUkết thúc quá trình. Điều này sau đó có thể được bắt bởi quá trình cha mẹ và xử lý ở đó.

Chỉ có một quá trình hoặc toàn bộ người dùng được sử dụng CPU?

Gần như tất cả các giới hạn được tham chiếu được xử lý trên cơ sở mỗi quá trình. Bao gồm thời gian CPU. Những người duy nhất tôi không tin là tổng số lần đăng nhập và tổng số quy trình của người dùng đó.

Một số vấn đề khác có giới hạn là:

  • Các quy trình tối đa bao gồm số lượng các chủ đề nhẹ.
  • Giới hạn RSS không làm gì cả và đã không được thiết lập trong một số năm.

1

Đây là cho các pam_limitsmô-đun ... nó là setrlimit(2)sysctl(8)các giá trị. Tìm kiếm của tôi không khai quật được bất kỳ giới hạn cứng nào, nhưng các trang được trích dẫn đưa ra một số giải thích.


1

Câu trả lời nhanh là câu trả lời tốt đẹp, vì vậy ở đây đi.

  • Tìm ra các giá trị tối thiểu và tối đa cho các ưu tiên với schedtool -r; và
  • truy vấn các giới hạn hiện tại với ulimit -a.

Đừng quên đặt cả giới hạn mềm và giới hạn cứng, ngay cả khi chúng có cùng giá trị. Trong các thử nghiệm của tôi, đây là điều duy nhất cho thấy sự khác biệt trong lệnh ulimit.

Hy vọng điều này sẽ giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.