新聞中心
在Linux中,管道是不可或缺的一部分。管道可以被用來把多個命令連接起來,形成一個管道,可以在不同的命令之間傳遞數(shù)據(jù)。但是,管道的大小是有限制的,而這個限制對于一些特定的操作來說可能是不夠的。在Linux中,這個面積被稱為“pipesize”,它決定了管道的更大容量。本文將會探討Linux中的管道大小限制。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)新華免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
管道是一種進程間通信的方式,它通過將一個進程的輸出傳遞給另一個進程來實現(xiàn)通信。如果管道的大小限制太小,可以導(dǎo)致管道無法傳輸足夠大的數(shù)據(jù)塊。這個問題可能在一些特定的應(yīng)用場景中非常重要,比如接收大量的實時數(shù)據(jù)流。
Pipesize實際上指的是管道的緩沖區(qū)大小,也就是能夠存儲在管道中的數(shù)據(jù)量的大小。一般來說,這個緩沖區(qū)大小對于大多數(shù)用例來說是足夠的,但是在某些情況下需要對其進行調(diào)整。
事實上,在Linux中,管道的大小受到系統(tǒng)內(nèi)存大小和進程數(shù)量的限制。如果系統(tǒng)內(nèi)存較小,那么管道的大小限制就較小。另一方面,如果運行的進程數(shù)量過多,管道的大小限制也會相應(yīng)地下降。當(dāng)然,在多核CPU上運行多個進程時,可以增加管道的大小限制,以提高管道的吞吐量。
那么,怎樣才能夠改變管道的大小限制呢?
在Linux中,可以使用“ulimit”命令來改變管道的大小限制。在終端中輸入“ulimit -p ”命令可以修改管道的大小限制。其中,“size”參數(shù)表示期望的緩沖區(qū)大小,單位為字節(jié)。需要注意到是,這個命令只對當(dāng)前終端會話生效。如果需要永久使用修改,需要對相關(guān)配置文件進行修改。
相關(guān)問題拓展閱讀:
- linux中的pipe和fifo的區(qū)別
- 虛擬機部署exadata cell 節(jié)點,啟動cellsrv服務(wù)報錯?
linux中的pipe和fifo的區(qū)別
/*實現(xiàn)子進程向管道中寫入數(shù)據(jù),
父進程
讀出數(shù)據(jù)*/
#include
#include
#include
#include
#include
int
main()
{
pid_t
childpid;
int
fd,nbytes;
char
string=”data
from
child
process\n”;
char
buf;
在linux進程間通信(IPC)可以通過信號量、文件系統(tǒng)、消息隊列、共享內(nèi)存還有管道來實現(xiàn)的。其中消息隊列、內(nèi)存管理是在SystemV中提出的。進程通信間涉及到了管道,而且管道在shell命令中也大有用處。
那就簡要說說管道:管道顧名思義,你可以將其理解為日常生活中的管子,一邊流入,一邊流出。它可以有半雙工和全雙工。半雙工就是只能一邊流入,另一邊流出;全雙工則是一邊可以流入,也可以流出。
1、pipe就是一種半雙工的管道。其中,fd用來向管道中寫入數(shù)據(jù),而fd在另一端用來讀出數(shù)據(jù)。如果現(xiàn)有兩個進程要利用pipe進行通信。此時,就要保證只能有一個寫入端和一個讀出端,即:fd和fd只能有一個。
2、fifo是一種全雙工,即:它的一端既可以進行讀取fd,也可以進行寫入fd。正因為它的這種通信方式,使其可以用來涉及基于C/S模式的網(wǎng)絡(luò)通信。
虛擬機部署exadata cell 節(jié)點,啟動cellsrv服務(wù)報錯?
根據(jù)報錯路徑查看trc文件里面的內(nèi)容才能夠判斷
首先需要在虛擬機中安裝Oracle Linux 5.7, (Red Hat Enterprise Linux理論也可以,但我沒有測試過),內(nèi)存分配1GB通常就足夠了。安裝過程很簡單,需要注意的是需要選上軟件開發(fā)包,例如gcc/aio之類的,圖形界面(GUI)可不裝。
注意: 安裝完成以后Oracle Linux默認(rèn)使用UEK,如果這里使用UEK, 則在后面的步驟中無法正常啟動cellsrv服務(wù)??梢孕薷膅rub的配置將其默認(rèn)啟動內(nèi)核修改為redhat兼容內(nèi)核:
將default=0修改為default=1 ,然后型茄重啟。
因為默認(rèn)Oracle Linux啟動了很多我們不需要的服務(wù),為了節(jié)省資源:建議將以下服務(wù)停止并且禁用。
當(dāng)頌盯然上述服務(wù)的禁用也可以通過 ntsysv –level 2345在圖形界面進行選擇,取消掉不需要的服務(wù),然后重啟。
然后我們將Exadata Cell Image V.zip上傳到虛擬機內(nèi),然后解壓,得到cellImageMaker_11.2.3.2.0_LINUX.X64_.x86_64.tar,繼續(xù)解壓得到dl180文件夾。
在dl180/boot/cellbits下找到cell.bin文件。這個bin文件實際上是一個zip壓縮包我們使用unzip來對它進行解壓:
解壓后得到cell-11.2.3.2.1_LINUX.X64_.x86_64.rpm和jdk-1_5_0_15-linux-amd64.rpm
我們先來安裝jdk:
# rpm -ivh jdk-1_5_0_15-linux-amd64.rpm
然后再安裝cell:
# rpm -ivh cell-11.2.3.2.1_LINUX.X64_.x86_64.rpm
安裝的時候報錯,提示有LWP包依賴:
配置好yum源直接使用yum安裝LWP:
# yum install perl-libwww-perl
再次安裝cell,又一次提示錯誤,前提條件不滿足,到底是什么前提條件不滿足沒有提示,只能通過以下方式生成具體的檢查條件的腳本然后再看是什么條件不滿足:
# rpm –scripts -qp cell-11.2.3.2.1_LINUX.X64_.x86_64.rpm >>diag.log
打開diag.log,很快看到應(yīng)該是/var/log/oracle目錄不存在導(dǎo)致的,于是手工建立這個目錄并修改權(quán)限為775。
# mkdir -p /var/log/oracle
# chmod -R 775 /var/log/oracle
再次安裝cell這次沒有報錯。
執(zhí)行dd.sh創(chuàng)建對應(yīng)的磁盤和閃盤:其中磁盤12塊,每塊大小為1GB,閃盤4塊,沒塊大小也是1GB。
然后刪除dd腳本,切換到celladmin用戶,重新啟動celld服務(wù)。
# su – celladmin
$ cellcli -e alter cell restart services all
發(fā)現(xiàn)cellsrv服務(wù)無法啟動,查看/opt/oracle/cell11.2.3.2.1_LINUX.X64_130109/log/diag/a/cell/cell/trace/alert.log發(fā)現(xiàn)有類似如下的報錯信息:
CELLSRV version=11.2.3.2.1,label=OSS_11.2.3.2.1_LINUX.X64_130109,Wed_Jan__9_06:09:48_PST_2023
Non critical error DIAcaught while writing to trace file “/opt/oracle/cell11.2.3.2.1_LINUX.X64_130109/log/diag/a/cell/cell/trace/svtrc_2244_0.trc”
Error message: DIA-48913: Writing into trace file failed, file size limit reached
從錯野租和誤號就可以判斷應(yīng)該是更大文件數(shù)不足, 于是需要再修改操作系統(tǒng)的更大文件數(shù)限制:
在/etc/sysctl.ctl最后添加一行: fs.file-max = 65536,然后刷新生效:
在/etc/security/limit.conf文件最后添加兩行:
* soft nofile 65536
* hard nofile 65536
然后退出重新登錄, 切換到 celladmin,使用ulimit -a進行查看是否生效:
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheng priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11999
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q)
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 11999
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
再次啟動cell所有的服務(wù):
$ cellcli -e alter cell restart services all
這次發(fā)現(xiàn)cell下的cellsrv, ms, rs服務(wù)都可以正常啟動了。
接下來需要在cellinit.ora中添加網(wǎng)卡的信息:
$ cellcli -e create cell cell1 interconnect1=eth0
執(zhí)行成功以后,可以看到cellinit.ora文件中添加了一行ipaddress1=192.168.56.101/24類似的信息。
# cat /opt/oracle/cell/cellsrv/deploy/config/cellinit.ora
#CELL Initialization Parameters
version=0.0
DEPLOYED=TRUE
HTTP_PORT=8888
RMI_PORT=23791
SSL_PORT=23943
JMS_PORT=9127
BMC_SNMP_PORT=162
ipaddress1=192.168.56.101/24
接下來創(chuàng)建celldisk, griddisk, flashcache, flashlog:
關(guān)于linux pipesize的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽、重慶、貴陽機房服務(wù)器托管租用。
本文題目:Linux中的管道大小限制:pipesize (linux pipesize)
分享地址:http://www.fisionsoft.com.cn/article/dhjhgec.html


咨詢
建站咨詢
