From 517267a57752db8f1aeb303502bf2bfbf06050f5 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 11 Jun 2022 12:21:42 -0700 Subject: [PATCH] Reduce MKDEPS.COM latency from 60ms to 18ms --- build/bootstrap/mkdeps.com | Bin 65536 -> 94208 bytes examples/examples.mk | 3 +- libc/calls/close.c | 4 +- test/tool/build/lib/getargs_test.c | 1 + tool/build/mkdeps.c | 208 +++++++++++++++++++---------- 5 files changed, 140 insertions(+), 76 deletions(-) diff --git a/build/bootstrap/mkdeps.com b/build/bootstrap/mkdeps.com index bbb1e066d30fe2c3b55a32ee030d4ac9de2d33cb..e44772d330dae5017c48d4d4aadf675e3693f260 100755 GIT binary patch literal 94208 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 literal 65536 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

|UZeJK6z7b#EPF$rA> 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 diff --git a/examples/examples.mk b/examples/examples.mk index d728d811d..96478fdd0 100644 --- a/examples/examples.mk +++ b/examples/examples.mk @@ -36,7 +36,8 @@ EXAMPLES_COMS = \ EXAMPLES_BINS = \ $(EXAMPLES_COMS) \ - $(EXAMPLES_COMS:%=%.dbg) + $(EXAMPLES_COMS:%=%.dbg) \ + o/$(MODE)/examples/life-nomod.com EXAMPLES_DIRECTDEPS = \ DSP_CORE \ diff --git a/libc/calls/close.c b/libc/calls/close.c index 3db9bb566..f2e9f0f2d 100644 --- a/libc/calls/close.c +++ b/libc/calls/close.c @@ -49,7 +49,6 @@ */ int close(int fd) { int rc; - __fds_lock(); if (fd == -1) { rc = 0; } else if (fd < 0) { @@ -78,10 +77,9 @@ int close(int fd) { } } if (!__vforked) { - __releasefd_unlocked(fd); + __releasefd(fd); } } - __fds_unlock(); STRACE("%s(%d) → %d% m", "close", fd, rc); return rc; } diff --git a/test/tool/build/lib/getargs_test.c b/test/tool/build/lib/getargs_test.c index 32d9eb173..d4102d520 100644 --- a/test/tool/build/lib/getargs_test.c +++ b/test/tool/build/lib/getargs_test.c @@ -44,6 +44,7 @@ TEST(getargs, test) { EXPECT_STREQ("dawg", getargs_next(&ga)); EXPECT_STREQ("fun", getargs_next(&ga)); EXPECT_EQ(NULL, getargs_next(&ga)); + EXPECT_EQ(NULL, getargs_next(&ga)); getargs_destroy(&ga); } diff --git a/tool/build/mkdeps.c b/tool/build/mkdeps.c index a49b4cfc2..b1b48b606 100644 --- a/tool/build/mkdeps.c +++ b/tool/build/mkdeps.c @@ -29,21 +29,28 @@ #include "libc/errno.h" #include "libc/fmt/fmt.h" #include "libc/intrin/kprintf.h" +#include "libc/intrin/spinlock.h" #include "libc/log/check.h" #include "libc/log/log.h" #include "libc/macros.internal.h" +#include "libc/mem/alloca.h" #include "libc/mem/mem.h" #include "libc/nexgen32e/crc32.h" +#include "libc/nexgen32e/threaded.h" #include "libc/runtime/ezmap.internal.h" #include "libc/runtime/gc.internal.h" #include "libc/runtime/runtime.h" +#include "libc/runtime/stack.h" +#include "libc/runtime/sysconf.h" #include "libc/stdio/append.internal.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" +#include "libc/sysv/consts/clone.h" #include "libc/sysv/consts/madv.h" #include "libc/sysv/consts/map.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/prot.h" +#include "libc/time/time.h" #include "libc/x/x.h" #include "third_party/getopt/getopt.h" #include "tool/build/lib/getargs.h" @@ -113,14 +120,21 @@ struct Edges { }; char *out; -char *bout; +char **tls; +int threads; +char **bouts; +char **stack; unsigned counter; -uint32_t *visited; +struct GetArgs ga; struct Edges edges; struct Sauce *sauces; struct Strings strings; struct Sources sources; const char *buildroot; +_Alignas(64) int galock; +_Alignas(64) int readlock; +_Alignas(64) int writelock; +_Alignas(64) int reportlock; unsigned Hash(const void *s, size_t l) { return max(1, crc32c(0, s, l)); @@ -232,25 +246,33 @@ wontreturn void OnMissingFile(const char *list, const char *src) { exit(1); } -void LoadRelationships(int argc, char *argv[]) { +int LoadRelationshipsWorker(void *arg) { int fd; - char *buf; ssize_t rc; bool skipme; struct Edge edge; - struct GetArgs ga; + char *buf, *freeme; + char srcbuf[PATH_MAX]; + size_t i, n, inclen, size; unsigned srcid, dependency; - size_t i, inclen, size; const char *p, *pe, *src, *path, *pathend; inclen = strlen(kIncludePrefix); - buf = gc(xmemalign(PAGESIZE, PAGESIZE + MAX_READ + 16)); + freeme = buf = memalign(PAGESIZE, PAGESIZE + MAX_READ + 16); buf += PAGESIZE; buf[-1] = '\n'; - getargs_init(&ga, argv + optind); - while ((src = getargs_next(&ga))) { + for (;;) { + _spinlock(&galock); + if ((src = getargs_next(&ga))) strcpy(srcbuf, src); + _spunlock(&galock); + if (!src) break; + src = srcbuf; if (ShouldSkipSource(src)) continue; - srcid = GetSourceId(src, strlen(src)); + n = strlen(src); + _spinlock(&readlock); + srcid = GetSourceId(src, n); + _spunlock(&readlock); if ((fd = open(src, O_RDONLY)) == -1) { + _spinlock(&reportlock); OnMissingFile(ga.path, src); } CHECK_NE(-1, (rc = read(fd, buf, MAX_READ))); @@ -263,14 +285,39 @@ void LoadRelationships(int argc, char *argv[]) { path = p + inclen; pathend = memchr(path, '"', pe - path); if (pathend && (p[-1] == '#' || p[-1] == '.') && p[-2] == '\n') { + _spinlock(&readlock); dependency = GetSourceId(path, pathend - path); + _spunlock(&readlock); edge.from = srcid; edge.to = dependency; + _spinlock(&writelock); append(&edges, &edge); + _spunlock(&writelock); p = pathend; } } } + free(freeme); + return 0; +} + +void LoadRelationships(int argc, char *argv[]) { + int i; + getargs_init(&ga, argv + optind); + for (i = 0; i < threads; ++i) { + if (clone(LoadRelationshipsWorker, stack[i], GetStackSize(), + CLONE_THREAD | CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | + CLONE_SETTLS | CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID, + (void *)(intptr_t)i, 0, __initialize_tls(tls[i]), 64, + (int *)(tls[i] + 0x38)) == -1) { + _spinlock(&reportlock); + kprintf("error: clone(%d) failed %m\n", i); + exit(1); + } + } + for (i = 0; i < threads; ++i) { + _spinlock((int *)(tls[i] + 0x38)); + } getargs_destroy(&ga); } @@ -294,19 +341,12 @@ void GetOpts(int argc, char *argv[]) { if (isempty(buildroot)) kprintf("need -r o/$(MODE)"), exit(1); } -const char *StripExt(const char *s) { - static bool once; - static size_t i, n; - static char *p, *dot; - if (!once) { - once = true; - __cxa_atexit(free_s, &p, NULL); - } - i = 0; - CONCAT(&p, &i, &n, s, strlen(s) + 1); - dot = strrchr(p, '.'); +const char *StripExt(char pathbuf[PATH_MAX], const char *s) { + static char *dot; + strcpy(pathbuf, s); + dot = strrchr(pathbuf, '.'); if (dot) *dot = '\0'; - return p; + return pathbuf; } bool IsObjectSource(const char *name) { @@ -329,16 +369,6 @@ forceinline bool Bts(uint32_t *p, size_t i) { return false; } -void Dive(unsigned id) { - int i; - for (i = FindFirstFromEdge(id); i < edges.i && edges.p[i].from == id; ++i) { - if (Bts(visited, edges.p[i].to)) continue; - appendw(&bout, READ32LE(" \\\n\t")); - appends(&bout, strings.p + sauces[edges.p[i].to].name); - Dive(edges.p[i].to); - } -} - size_t GetFileSizeOrZero(const char *path) { struct stat st; st.st_size = 0; @@ -346,66 +376,100 @@ size_t GetFileSizeOrZero(const char *path) { return st.st_size; } -/* prevents gnu make from restarting unless necessary */ -bool HasSameContent(void) { - bool r; - int fd; - char *m; - size_t s; - s = GetFileSizeOrZero(out); - if (s == appendz(bout).i) { - if (s) { - CHECK_NE(-1, (fd = open(out, O_RDONLY)), "open(%#s)", out); - CHECK_NE(MAP_FAILED, (m = mmap(0, s, PROT_READ, MAP_SHARED, fd, 0))); - r = !bcmp(bout, m, s); - munmap(m, s); - close(fd); - } else { - r = true; - } - } else { - r = false; +void Dive(char **bout, uint32_t *visited, unsigned id) { + int i; + for (i = FindFirstFromEdge(id); i < edges.i && edges.p[i].from == id; ++i) { + if (Bts(visited, edges.p[i].to)) continue; + appendw(bout, READ32LE(" \\\n\t")); + appends(bout, strings.p + sauces[edges.p[i].to].name); + Dive(bout, visited, edges.p[i].to); } - return r; } -int main(int argc, char *argv[]) { - int fd; +int Diver(void *arg) { + char *bout = 0; const char *path; + uint32_t *visited; size_t i, visilen; - if (argc == 2 && !strcmp(argv[1], "-n")) exit(0); - out = "/dev/stdout"; - GetOpts(argc, argv); - LoadRelationships(argc, argv); - Crunch(); + char pathbuf[PATH_MAX]; + int tid = (intptr_t)arg; visilen = (sources.i + sizeof(*visited) * CHAR_BIT - 1) / (sizeof(*visited) * CHAR_BIT); visited = malloc(visilen * sizeof(*visited)); - for (i = 0; i < sources.i; ++i) { + for (i = tid; i < sources.i; i += threads) { path = strings.p + sauces[i].name; if (!IsObjectSource(path)) continue; appendw(&bout, '\n'); if (!startswith(path, "o/")) { appends(&bout, buildroot); } - appends(&bout, StripExt(path)); + appends(&bout, StripExt(pathbuf, path)); appendw(&bout, READ64LE(".o: \\\n\t")); appends(&bout, path); bzero(visited, visilen * sizeof(*visited)); Bts(visited, i); - Dive(i); + Dive(&bout, visited, i); appendw(&bout, '\n'); } - /* if (!fileexists(out) || !HasSameContent()) { */ - CHECK_NE(-1, (fd = open(out, O_CREAT | O_WRONLY, 0644)), "open(%#s)", out); - CHECK_NE(-1, ftruncate(fd, appendz(bout).i)); - CHECK_NE(-1, xwrite(fd, bout, appendz(bout).i)); - CHECK_NE(-1, close(fd)); - /* } */ - free(strings.p); - free(edges.p); free(visited); - free(sauces); - free(bout); + appendw(&bout, '\n'); + bouts[tid] = bout; + return 0; +} + +void Explore(void) { + int i; + for (i = 0; i < threads; ++i) { + if (clone(Diver, stack[i], GetStackSize(), + CLONE_THREAD | CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | + CLONE_SETTLS | CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID, + (void *)(intptr_t)i, 0, __initialize_tls(tls[i]), 64, + (int *)(tls[i] + 0x38)) == -1) { + _spinlock(&reportlock); + kprintf("error: clone(%d) failed %m\n", i); + exit(1); + } + } + for (i = 0; i < threads; ++i) { + _spinlock((int *)(tls[i] + 0x38)); + } +} + +int main(int argc, char *argv[]) { + int i, fd; + if (argc == 2 && !strcmp(argv[1], "-n")) exit(0); + out = "/dev/stdout"; + GetOpts(argc, argv); + threads = GetCpuCount(); + tls = calloc(threads, sizeof(*tls)); + stack = calloc(threads, sizeof(*stack)); + bouts = calloc(threads, sizeof(*bouts)); + for (i = 0; i < threads; ++i) { + if (!(tls[i] = malloc(64)) || + (stack[i] = mmap(0, GetStackSize(), PROT_READ | PROT_WRITE, + MAP_STACK | MAP_ANONYMOUS, -1, 0)) == MAP_FAILED) { + kprintf("error: mmap(%d) failed %m\n", i); + exit(1); + } + } + LoadRelationships(argc, argv); + Crunch(); + Explore(); + CHECK_NE(-1, (fd = open(out, O_CREAT | O_WRONLY, 0644)), "open(%#s)", out); + for (i = 0; i < threads; ++i) { + CHECK_NE(-1, xwrite(fd, bouts[i], appendz(bouts[i]).i)); + } + CHECK_NE(-1, close(fd)); + for (i = 0; i < threads; ++i) { + munmap(stack[i], GetStackSize()); + free(bouts[i]); + free(tls[i]); + } + free(strings.p); + free(edges.p); + free(sauces); + free(stack); + free(bouts); + free(tls); return 0; }