Skip to content

Commit

Permalink
Adjust the size of the pipeline ipc buffer to reduce the kernel memor…
Browse files Browse the repository at this point in the history
…y usage
  • Loading branch information
matyhtf committed Feb 11, 2022
1 parent b6e9b14 commit 459909d
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 12 deletions.
10 changes: 5 additions & 5 deletions include/swoole_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
#else
#define SW_IPC_MAX_SIZE 8192 // for IPC, dgram and message-queue max size
#endif
#define SW_IPC_BUFFER_MAX_SIZE (256 * 1024)
#define SW_IPC_BUFFER_SIZE (SW_IPC_MAX_SIZE - sizeof(swoole::DataHead))
// !!!End.-------------------------------------------------------------------

Expand Down Expand Up @@ -118,7 +119,6 @@
#define SW_SESSION_LIST_SIZE (1 * 1024 * 1024)

#define SW_MSGMAX 65536
#define SW_UNIXSOCK_MAX_BUF_SIZE (2 * 1024 * 1024)

#define SW_DGRAM_HEADER_SIZE 32

Expand Down Expand Up @@ -166,8 +166,8 @@
#define SW_USE_EVENTFD \
1 // Whether to use eventfd for message notification, Linux 2.6.22 or later is required to support

#define SW_TASK_TMP_PATH_SIZE 256
#define SW_TASK_TMP_DIR "/tmp"
#define SW_TASK_TMP_PATH_SIZE 256
#define SW_TASK_TMP_DIR "/tmp"
#define SW_TASK_TMP_FILE "swoole.task.XXXXXX"

#define SW_FILE_CHUNK_SIZE 65536
Expand All @@ -194,10 +194,10 @@
#define SW_DNS_RESOLV_CONF "/etc/resolv.conf"

#define SW_Z_BEST_SPEED 1
#define SW_COMPRESSION_MIN_LENGTH_DEFAULT 20
#define SW_COMPRESSION_MIN_LENGTH_DEFAULT 20

#ifndef IOV_MAX
#define IOV_MAX 16
#define IOV_MAX 16
#endif

#define IOV_MAX_ERROR_MSG "The maximum of iov count is %d"
Expand Down
4 changes: 2 additions & 2 deletions src/server/master.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1964,7 +1964,7 @@ Connection *Server::add_connection(ListenPort *ls, Socket *_socket, int server_f
}

void Server::init_ipc_max_size() {
#ifdef HAVE_KQUEUE
#ifndef __linux__
ipc_max_size = SW_IPC_MAX_SIZE;
#else
int bufsize;
Expand All @@ -1974,7 +1974,7 @@ void Server::init_ipc_max_size() {
if (workers[0].pipe_master->get_option(SOL_SOCKET, SO_SNDBUF, &bufsize) != 0) {
bufsize = SW_IPC_MAX_SIZE;
}
ipc_max_size = bufsize - SW_DGRAM_HEADER_SIZE;
ipc_max_size = SW_MIN(bufsize, SW_IPC_BUFFER_MAX_SIZE) - SW_DGRAM_HEADER_SIZE;
#endif
}

Expand Down
5 changes: 0 additions & 5 deletions src/server/process.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ bool ProcessFactory::start() {
}

SW_LOOP_N(server_->worker_num) {
int kernel_buffer_size = SW_UNIXSOCK_MAX_BUF_SIZE;
auto _sock = new UnixSocket(true, SOCK_DGRAM);
if (!_sock->ready()) {
delete _sock;
Expand All @@ -80,10 +79,6 @@ bool ProcessFactory::start() {
pipes.emplace_back(_sock);
server_->workers[i].pipe_master = _sock->get_socket(true);
server_->workers[i].pipe_worker = _sock->get_socket(false);

server_->workers[i].pipe_master->set_send_buffer_size(kernel_buffer_size);
server_->workers[i].pipe_worker->set_send_buffer_size(kernel_buffer_size);

server_->workers[i].pipe_object = _sock;
server_->store_pipe_fd(server_->workers[i].pipe_object);
}
Expand Down

0 comments on commit 459909d

Please sign in to comment.