From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: tarantool-patches@freelists.org Cc: kostja@tarantool.org Subject: [tarantool-patches] [PATCH 2/2] swim: optimize struct swim_task layout Date: Sat, 6 Jul 2019 00:40:09 +0200 [thread overview] Message-ID: <c0d6f98318cfbd0a2884adb443840f43d9bf5ff4.1562366340.git.v.shpilevoy@tarantool.org> (raw) In-Reply-To: <cover.1562366340.git.v.shpilevoy@tarantool.org> Before the patch it was split in two parts by 1.5KB packet, and in the constructor it was nullifying the whole volume. Obviously, these were mistakes. The first problem breaks cache locality, the second one flushes the cache. --- src/lib/swim/swim_io.c | 3 ++- src/lib/swim/swim_io.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/swim/swim_io.c b/src/lib/swim/swim_io.c index d83f52ae9..af1092416 100644 --- a/src/lib/swim/swim_io.c +++ b/src/lib/swim/swim_io.c @@ -166,7 +166,8 @@ void swim_task_create(struct swim_task *task, swim_task_f complete, swim_task_f cancel, const char *desc) { - memset(task, 0, sizeof(*task)); + /* Do not nullify the whole structure! It is too big. */ + memset(task, 0, offsetof(struct swim_task, packet)); task->complete = complete; task->cancel = cancel; task->desc = desc; diff --git a/src/lib/swim/swim_io.h b/src/lib/swim/swim_io.h index 3e631935d..bf5a1389f 100644 --- a/src/lib/swim/swim_io.h +++ b/src/lib/swim/swim_io.h @@ -233,8 +233,6 @@ struct swim_task { * and it cancels all its tasks. */ swim_task_f cancel; - /** Packet to send. */ - struct swim_packet packet; /** Destination address. */ struct sockaddr_in dst; /** @@ -264,6 +262,8 @@ struct swim_task { }; /** Link in the task pool. */ struct stailq_entry in_pool; + /** Packet to send. */ + struct swim_packet packet; }; /** Check if @a task is already scheduled. */ -- 2.20.1 (Apple Git-117)
next prev parent reply other threads:[~2019-07-05 22:39 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-05 22:40 [tarantool-patches] [PATCH 0/2] SWIM micro optimizations Vladislav Shpilevoy 2019-07-05 22:40 ` [tarantool-patches] [PATCH 1/2] swim: pool IO tasks Vladislav Shpilevoy 2019-07-05 23:01 ` [tarantool-patches] " Konstantin Osipov 2019-07-06 21:00 ` Vladislav Shpilevoy 2019-07-08 8:25 ` Konstantin Osipov 2019-07-08 18:31 ` Vladislav Shpilevoy 2019-07-08 21:54 ` Konstantin Osipov 2019-07-08 22:13 ` Vladislav Shpilevoy 2019-07-08 23:08 ` Konstantin Osipov 2019-07-09 19:43 ` Vladislav Shpilevoy 2019-07-09 22:24 ` Konstantin Osipov 2019-07-05 22:40 ` Vladislav Shpilevoy [this message] 2019-07-05 23:02 ` [tarantool-patches] Re: [PATCH 2/2] swim: optimize struct swim_task layout Konstantin Osipov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=c0d6f98318cfbd0a2884adb443840f43d9bf5ff4.1562366340.git.v.shpilevoy@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH 2/2] swim: optimize struct swim_task layout' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox