Linux RPC调用很慢
发布时间:2020-12-13 23:28:00 所属栏目:Linux 来源:网络整理
导读:以下RPC程序在Fedora上执行速度非常慢. 如果我在llist.x中将名称缓冲区的大小从999个字符更改为512,那么它的工作速度很快. 我不知道为什么. 如果有人知道原因,请告诉我! 注意:请编译以下程序并执行服务器然后执行客户端. (对我来说,30个循环需要3秒钟.) ll
以下RPC程序在Fedora上执行速度非常慢.
如果我在llist.x中将名称缓冲区的大小从999个字符更改为512,那么它的工作速度很快. 我不知道为什么. 如果有人知道原因,请告诉我! 注意:请编译以下程序并执行服务器然后执行客户端. llist.c #include "llist.h" #define PRINT_TIME (!gettimeofday(&tv,NULL) && printf(" %lf",tv.tv_sec+(tv.tv_usec/1000000.0))) struct timeval tv; int main(int argc,char *argv[]) { CLIENT *cl; int *result,i=0; cl = clnt_create("localhost",PRINTER,PRINTER_V1,"tcp"); if (cl == NULL) { clnt_pcreateerror("Cant Create Client Handle"); printf("error: could not connect to server.n"); return 1; } ST1 key[1]; ST1_stuff key_x; /*key_x.ST1_stuff_val = key; key_x.ST1_stuff_len = 1; */ while(i<30) { printf("n %d -> start - ",i); PRINT_TIME; result = sei_conf_test_keys2_1(&key_x,cl); if (result == NULL) { printf("error: RPC failed!n"); return 1; } printf("nresult = %d ",*result); i++; printf("n end - "); PRINT_TIME; printf("n -------------------------------------"); } return 0; } llist_svc_proc.c #include <stdlib.h> #include "llist.h" int result; int *sei_conf_test_keys2_1_svc(ST1 *lst,struct svc_req *req) { result = 0; return &result; } llist.x struct s1{ char name[999]; /* <===== HERE */ }; typedef struct s1 ST1; typedef ST1 ST1_stuff[1]; program PRINTER { version PRINTER_V1 { int SEI_CONF_TEST_KEYS2(ST1_stuff) = 10; } = 1; } = 0x2fffffff; 生成文件 .SUFFIXES: .SUFFIXES: .c .o CLNT = llist SRVR = llist_svc CFLAGS = -g -Wall SRVR_OBJ = llist_svc_proc.o llist_xdr.o llist_svc.o CLNT_OBJ = llist.o llist_xdr.o llist_clnt.o .c.o: gcc -c -o $@ $(CFLAGS) $< default: $(CLNT) $(SRVR) $(CLNT): $(CLNT_OBJ) llist.h gcc -o $(CLNT) $(CLNT_OBJ) $(SRVR): $(SRVR_OBJ) llist.h gcc -o $(SRVR) $(SRVR_OBJ) clean: rm *.o $(CLNT) $(SRVR) rm -f llist_xdr.c llist.h llist_clnt.c llist_svc.c rm core 解决方法
时间的增加似乎与允许的最大值有关
一个TCP包中的数据. 可以看到,使用网络分析仪,大小为999,有167个包 如果您需要性能,请考虑切换到UDP,这似乎不受最大包大小和额外开销的限制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |