Small tweaks to new load tester
This commit is contained in:
@@ -130,7 +130,6 @@ constexpr int kNetworkThreads = std::min(8, kConcurrency);
|
||||
|
||||
constexpr int kEventBatchSize = 32;
|
||||
constexpr int kConnectionBufSize = 1024;
|
||||
constexpr uint32_t kMandatoryEpollFlags = EPOLLONESHOT;
|
||||
|
||||
sem_t connectionLimit;
|
||||
|
||||
@@ -232,20 +231,14 @@ struct Connection {
|
||||
assert(w != 0);
|
||||
request = request.substr(w, request.size() - w);
|
||||
if (request.empty()) {
|
||||
if (requestsSent == 0) {
|
||||
sentFirstRequest = now();
|
||||
}
|
||||
++requestsSent;
|
||||
if (requestsSent == kRequestsPerConnection) {
|
||||
return true;
|
||||
}
|
||||
initRequest();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double sentFirstRequest;
|
||||
|
||||
const int fd;
|
||||
const int64_t id;
|
||||
|
||||
@@ -282,6 +275,7 @@ private:
|
||||
int on_message_complete() {
|
||||
responseId = 0;
|
||||
++responsesReceived;
|
||||
initRequest();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -373,9 +367,10 @@ int main() {
|
||||
|
||||
// Transfer back to epoll instance. This thread or another thread
|
||||
// will wake when fd is ready
|
||||
events[i].events = EPOLLIN | kMandatoryEpollFlags;
|
||||
if (!conn->request.empty() && !conn->error) {
|
||||
events[i].events |= EPOLLOUT;
|
||||
events[i].events = EPOLLOUT | EPOLLONESHOT;
|
||||
} else {
|
||||
events[i].events = EPOLLIN | EPOLLONESHOT;
|
||||
}
|
||||
conn->tsan_release();
|
||||
events[i].data.ptr = conn.release();
|
||||
@@ -408,7 +403,7 @@ int main() {
|
||||
fd, connectionId.fetch_add(1, std::memory_order_relaxed));
|
||||
// Post to epoll instance
|
||||
struct epoll_event event{};
|
||||
event.events = EPOLLOUT | kMandatoryEpollFlags;
|
||||
event.events = EPOLLOUT | EPOLLONESHOT;
|
||||
conn->tsan_release();
|
||||
event.data.ptr = conn.release();
|
||||
e = epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &event);
|
||||
@@ -420,16 +415,6 @@ int main() {
|
||||
});
|
||||
}
|
||||
|
||||
auto now = []() {
|
||||
struct timespec t;
|
||||
int e = clock_gettime(CLOCK_MONOTONIC_RAW, &t);
|
||||
if (e == -1) {
|
||||
perror("clock_gettime");
|
||||
abort();
|
||||
}
|
||||
return double(t.tv_nsec) * 1e-9 + double(t.tv_sec);
|
||||
};
|
||||
|
||||
for (double prevTime = now(),
|
||||
prevConnections = connectionId.load(std::memory_order_relaxed);
|
||||
;) {
|
||||
|
||||
Reference in New Issue
Block a user