linux快速提高效率
Linux系统是如何创建进程的?听说这一过程是用C语言clone函数实现的?
Linux系统是如何创建进程的?听说这一过程是用C语言clone函数实现的?
这跟execvp函数的实现方式有关:
int execvp(const char *file ,char * const argv [])
execvp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。
之所以显示“fail to exec”,是因为在PATH环境变量所指的目录中没有名为“hello”的程序。建议进行如下操作:
1、运行“echo $PATH”,查看一下PATH环境变量指向那些目录
2、编写一个输出“hello world”的程序,并命名为hello,即执行命令:
gcc -o hello hello.c
3、把名为”hello“的程序拷贝到PATH变量所指的其中一个目录中
linux下怎么设置udp接收缓存最大值?
TCP有一个传输效率的公式:
Delivery Rate CWND / RTT
CWND
:拥塞窗口大小,以字节为单位。
* 在没有出现拥塞时,CWND 对端通告window大小
* 出现拥塞时,CWND 受本端拥塞算法控制,原则上带宽最大值*RTT
RTT
:TCP报文一来一去的延迟,以秒为单位。
如果想充分利用100M带宽,需要尽可能增加CWND大小,而在没有拥堵时,等于对端advertised window (对端缓存)的大小
,假定RTT时间是基本不变的。
为何TCP多线程可以充分利用带宽?
变相增加对端的缓存大小。
为何UDP可以充分利用带宽?
因为UDP没有拥塞机制,应用程序发送的速率 链路的最大带宽。