-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/73136/
-----------------------------------------------------------

Review request for mesos and Ilya Pronin.


Bugs: MESOS-10208
    https://issues.apache.org/jira/browse/MESOS-10208


Repository: mesos


Description
-------

The current approach to I/O in libprocess, with a single thread
performing all of the the I/O polling and I/O syscalls, cannot keep
up with the I/O load on massive scale mesos clusters (which use
libev rather than libevent).

This adds support via a LIBPROCESS_LIBEV_NUM_IO_THREADS env variable
for configuring the number of threads running libev event loops,
which allows users to spread the IO load across multiple threads.


Diffs
-----

  3rdparty/libprocess/src/posix/libev/libev.hpp 
d451931871db650894e4a6e5b0d19ba876f65391 
  3rdparty/libprocess/src/posix/libev/libev.cpp 
b38e7a0f882a8c24950bdc6fd74a4d25fc68549e 
  3rdparty/libprocess/src/posix/libev/libev_poll.cpp 
96913a65507ca3540066e28448684d1e3fa540ca 


Diff: https://reviews.apache.org/r/73136/diff/1/


Testing
-------

So far only manual testing:

```
# Error
$ make check -j16 TEST_DRIVER="" 
GTEST_FILTER="-ProcessRemoteLinkTest.RemoteLinkLeak" 
LIBPROCESS_LIBEV_NUM_IO_THREADS=0
$ make check -j16 TEST_DRIVER="" 
GTEST_FILTER="-ProcessRemoteLinkTest.RemoteLinkLeak" 
LIBPROCESS_LIBEV_NUM_IO_THREADS=1025

# Success
$ make check -j16 TEST_DRIVER="" 
GTEST_FILTER="-ProcessRemoteLinkTest.RemoteLinkLeak" 
LIBPROCESS_LIBEV_NUM_IO_THREADS=1
$ make check -j16 TEST_DRIVER="" 
GTEST_FILTER="-ProcessRemoteLinkTest.RemoteLinkLeak" 
LIBPROCESS_LIBEV_NUM_IO_THREADS=32
```

Will follow up with some test(s) that leverage the reinitialize support in 
libprocess, so that the testing doesn't need to be done manually.


Thanks,

Benjamin Mahler

Reply via email to