diff options
author | Nathan Straz <nstraz@redhat.com> | 2013-09-16 16:20:25 -0400 |
---|---|---|
committer | Nathan Straz <nstraz@redhat.com> | 2013-09-16 16:20:25 -0400 |
commit | 28574cb4d104df98b92a9e6ca632729ed6c5fa9a (patch) | |
tree | d2f3e5481e0d6b6dca127424f8bd1e5126364b94 | |
parent | 0570bd953cf3ecd1b58c192a015a6f0d46423852 (diff) | |
download | qarsh-28574cb4d104df98b92a9e6ca632729ed6c5fa9a.tar.gz qarsh-28574cb4d104df98b92a9e6ca632729ed6c5fa9a.tar.xz qarsh-28574cb4d104df98b92a9e6ca632729ed6c5fa9a.zip |
Increase buffer and packet sizes
This coordinates the buffer sizes with the
max packet size. qarshd and qarsh will probably break
if this value does not match between client and server
builds. Also increase the value to reduce overhead.
A max packet size of 16k only yields 40MB/s. Increase
that to 128k and we can do 500MB/s.
-rw-r--r-- | qacp.c | 2 | ||||
-rw-r--r-- | qarsh.c | 2 | ||||
-rw-r--r-- | qarsh_packet.h | 2 | ||||
-rw-r--r-- | qarshd.c | 8 |
4 files changed, 7 insertions, 7 deletions
@@ -134,7 +134,7 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile) ssize_t nbytes; off_t offset; struct stat sb; - const int bufsize = 16384; + const int bufsize = QARSH_MAX_PACKET_SIZE/2; char buf[bufsize]; @@ -45,7 +45,7 @@ #include "hbeat.h" #define QARSH_MINPORT 5010 -#define QARSH_BUFSIZE 4096 +#define QARSH_BUFSIZE QARSH_MAX_PACKET_SIZE/2 #define CONNECT_TIMEOUT 30 diff --git a/qarsh_packet.h b/qarsh_packet.h index 578fccb..19ade47 100644 --- a/qarsh_packet.h +++ b/qarsh_packet.h @@ -23,7 +23,7 @@ #include <sys/types.h> #include <sys/stat.h> -#define QARSH_MAX_PACKET_SIZE 32*1024 +#define QARSH_MAX_PACKET_SIZE 128*1024 enum qa_packet_type { QP_INVALID = 0, @@ -41,7 +41,7 @@ #include "sockutil.h" #include "qarsh_packet.h" -#define QARSHD_BUFSIZE 4096 +#define QARSHD_BUFSIZE QARSH_MAX_PACKET_SIZE/2 /* * QA Remote Shell Daemon */ @@ -283,8 +283,8 @@ handle_qarsh() int child_status; struct qa_packet *qp = NULL, *rp = NULL; int allowed_out = 0, allowed_err = 0; /* number of bytes we can send to client */ - char buf[4096]; /* short term buffer for stdout and stderr */ - char buf_in[4096]; /* long term buffer for stdin */ + char buf[QARSHD_BUFSIZE]; /* short term buffer for stdout and stderr */ + char buf_in[QARSHD_BUFSIZE]; /* long term buffer for stdin */ int z_in = 0; /* Number of bytes in stdin buffer */ int eof_in = 0; /* Have we seen EOF on stdin yet? */ int nbytes; @@ -297,7 +297,7 @@ handle_qarsh() sa.sa_flags = SA_RESTART; sigaction(SIGCHLD, &sa, NULL); - qp = make_qp_data_allow(0, 4096); + qp = make_qp_data_allow(0, QARSHD_BUFSIZE); send_packet(qoutfd, qp); qpfree(qp); |