中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Linux中創建進程達到65535

發布時間:2021-05-21 17:17:45 來源:億速云 閱讀:143 作者:Leah 欄目:服務器

這期內容當中小編將會給大家帶來有關怎么在Linux中創建進程達到65535,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

//fork.c
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAXPROCESS 65535
#define SLEEPTIME 60
int main(int argc, char **argv) {
  pid_t pid;
  int count = 0;
  int maxprocess = MAXPROCESS;
  if (argc == 2) {
    maxprocess = atoi(argv[1]); 
  }
  for (count = 0; count < maxprocess; count++) {
    pid = fork();
    if (pid < 0) {
      perror("fork error");
      exit(1);
    } else if (pid == 0) {
      printf("child %d start\n", count);
      sleep(SLEEPTIME);
      printf("child %d end\n", count);
      exit(0);
    } 
    printf("parent:create %d child\n", count);
  }
  for (count = 0; count < MAXPROCESS; count++) {
    wait();
  }
  exit(0);
}

這段代碼是不斷創建子進程,默認是創建65535個進程,如果無法創建,就打印出錯誤。

測試代碼是我新建的一個blue帳戶進行運行測試,為了讓進程盡可能創建多的進程,首先要設置blue帳戶創建進程數的硬限制

使用root帳戶修改/etc/security/limits.conf文件,加入一下行:

blue             hard    nproc          65535

然后為blue帳戶設置創建進程的軟限制,在終端執行如下代碼:

ulimit -u 65535

到了這里,雖然我們設置blue帳戶創建進程數的硬限制和軟限制都是65535,但是我們還不能使用blue帳戶創建65535個進程,我們在Linux還需要設置內核參數kernel.pid_max,這個參數我默認安裝都是32768,所以即使使用root帳戶,卻不設置這個內核參數,整個系統最多可以創建的進程數就是32768,所以我們需要進行如下設置:

sysctl -w  kernel.pid_max=65535

備注:如果是使用root帳戶執行程序,是不需要設置資源的硬限制和軟限制,但是還是需要設置進程pid最大值的內核參數,才可以創建65535個進程。

接著在同一終端切換為blue帳戶:

su blue

編譯和執行測試代碼:

gcc fork.c -o fork
./fork

我的虛擬機Linux內存是512M,在創建6千多個進程時,程序運行得很慢,通過vmstat命令觀察,發現swap內存的置入置出很頻繁,可以判斷是由于內存不足,使用虛擬內存,導致頻繁的IO操作,讓測試代碼變得很慢,所以創建過多進程時,系統的內存是重要衡量的一個方面。

后來我把測試代碼放到一臺配置比較好的至強服務器測試,內存是8G,在創建接近4W個進程時,程序的運行也到了瓶頸,依然是內存的瓶頸。

測試代碼中,創建的子進程,占用的內存相當小,實際使用中,只可能比測試代碼創建的進程使用更多的內存,所以相應的,同樣配置的機器,能創建的可用進程應該是更少的。

什么是Linux系統

Linux是一種免費使用和自由傳播的類UNIX操作系統,是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統,使用Linux能運行主要的Unix工具軟件、應用程序和網絡協議。

上述就是小編為大家分享的怎么在Linux中創建進程達到65535了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平定县| 贡山| 太保市| 宿松县| 连平县| 滕州市| 定陶县| 卓资县| 札达县| 连城县| 历史| 广宁县| 黔西| 崇义县| 上林县| 临城县| 湖州市| 绿春县| 哈巴河县| 信丰县| 诸城市| 大新县| 南江县| 墨竹工卡县| 宁安市| 横峰县| 东丰县| 尤溪县| 永吉县| 永清县| 兴海县| 洛川县| 西平县| 法库县| 陇川县| 太康县| 嘉义县| 随州市| 达孜县| 永泰县| 福贡县|