From 16bd9ddc3e08e9a0fa94ae25ba6316e96e49f0db Mon Sep 17 00:00:00 2001 From: flamingcow Date: Sat, 11 May 2019 18:16:17 -0700 Subject: [PATCH] Switch to fireusage --- .gitmodules | 3 +++ Makefile | 8 ++++++-- fireusage | 1 + server.cc | 22 +++++++++------------- 4 files changed, 19 insertions(+), 15 deletions(-) create mode 160000 fireusage diff --git a/.gitmodules b/.gitmodules index 3d6ac0b..fc5c28a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "firebuf"] path = firebuf url = ../firebuf.git +[submodule "fireusage"] + path = fireusage + url = ../fireusage.git diff --git a/Makefile b/Makefile index 6360441..adfe86f 100644 --- a/Makefile +++ b/Makefile @@ -10,13 +10,16 @@ objects = server.o connection.o request.o parse.o firebuf/firebuf.o: $(MAKE) --directory=firebuf firebuf.o +fireusage/fireusage.o: + $(MAKE) --directory=fireusage fireusage.o + firecgi.a: $(objects) ar rcs $@ $^ -firecgi.o: $(objects) firebuf/firebuf.o +firecgi.o: $(objects) firebuf/firebuf.o fireusage/fireusage.o gold -z relro -z now -r --output=$@ $+ -firecgi.so: $(objects) firebuf/firebuf.o +firecgi.so: $(objects) firebuf/firebuf.o fireusage/fireusage.o $(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -shared -o $@ $+ $(FIRE_LDFLIBS) example_simple: example_simple.o firecgi.o @@ -27,6 +30,7 @@ example_simple: example_simple.o firecgi.o clean: $(MAKE) --directory=firebuf clean + $(MAKE) --directory=fireusage clean rm --force example_simple connection_afl *.so *.o *.a afl: diff --git a/fireusage b/fireusage new file mode 160000 index 0000000..5fea6af --- /dev/null +++ b/fireusage @@ -0,0 +1 @@ +Subproject commit 5fea6af3c32f9f26ecc58040e3b4895eaf7bd1f7 diff --git a/server.cc b/server.cc index a6d0bff..3808c75 100644 --- a/server.cc +++ b/server.cc @@ -9,6 +9,8 @@ #include #include +#include "fireusage/usage.h" + #include "server.h" #include "connection.h" @@ -87,7 +89,9 @@ void Server::ServeInt() { } std::unordered_set connections; - uint64_t requests = 0; + + fireusage::UsageTracker usage_tracker; + usage_tracker.Start(); while (true) { constexpr auto max_events = 256; @@ -103,28 +107,20 @@ void Server::ServeInt() { connections.insert(CHECK_NOTNULL(NewConn(listen_sock, epoll_fd))); } else if (events[i].data.ptr == &shutdown) { for (auto& conn : connections) { - requests += conn->Requests(); + usage_tracker.AddEvents(conn->Requests()); delete conn; } + usage_tracker.Stop(); PCHECK(close(listen_sock) == 0); PCHECK(close(epoll_fd) == 0); - - rusage usage; - PCHECK(getrusage(RUSAGE_THREAD, &usage) == 0); - - LOG(INFO) << std::setfill('0') - << "thread shutting down (" - << "handled " << requests << " requests, " - << usage.ru_utime.tv_sec << "." << std::setw(6) << usage.ru_utime.tv_usec << " user seconds, " << std::setw(0) - << usage.ru_stime.tv_sec << "." << std::setw(6) << usage.ru_stime.tv_usec << " system seconds" << std::setw(0) - << ")"; + usage_tracker.Log(); return; } else { auto conn = static_cast(events[i].data.ptr); auto fd = conn->Read(); if (fd != -1) { PCHECK(epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, nullptr) == 0); - requests += conn->Requests(); + usage_tracker.AddEvents(conn->Requests()); connections.erase(conn); delete conn; }