- 06 Mar, 2020 1 commit
-
-
Dave Rigby authored
Summary: The absence of GFlags is already partially optional - portability/GFlags.h defines a number of stub macros / clases if FOLLY_HAVE_LIBGFLAGS is false. However the top-level CMake rules don't correctly handle when GFlags isn't present - they unconditionally add GFlags-related variables to CMAKE_REQUIRED_xxx variables. Additionally there are a couple of source files which should not be compiled if GFlags isn't available. Pull Request resolved: https://github.com/facebook/folly/pull/1325 Differential Revision: D20252030 Pulled By: yfeldblum fbshipit-source-id: 7c3441e8b2850d68df125fb9c14b8417f4d08b55
-
- 05 Mar, 2020 2 commits
-
-
Mark Santaniello authored
Summary: Support the brand-new TCMalloc version that was just released. Reviewed By: luciang Differential Revision: D19943852 fbshipit-source-id: 10ae07051d2bc56a502ee0d5e5767035cf53794f
-
Yixian Jiang authored
Summary: Replace the methods to get CPU and memory usage statistics: - For the memory: use `VmRSS` of `/proc/[pid]/status`: http://man7.org/linux/man-pages/man5/proc.5.html - For the CPU%: calculate the process is occupied how much percentage of the CPU time, use `getrusage()`: http://man7.org/linux/man-pages/man2/getrusage.2.html - Implemented like the sigar: https://our.intern.facebook.com/intern/diffusion/FBS/browse/master/third-party/sigar/src/sigar.c?commit=4f945812675131ea64cb3d143350b1414f34a351&lines=111-169 - Formula: - CPU% = `process used time` during the period / `time period` * 100 - `time period` = current query timestamp - last query timestamp - `process used time` = current `process total time` - last query `process total time` - `process total time` = CPU time used in user mode + CPU time used in system mode // get from the API `ru_utime` and `ru_stime` Remove the `fbzmq::ResourceMonitor` and `sigar`: - Change and rename the UT - `ResourceMonitorTest.cpp` -> `SystemMetricsTest.cpp` - `ResourceMonitor` -> `SystemMetricsTest` in `openr/tests/OpenrSystemTest.cpp` - Remove `ResourceMonitor` code and dependency for `Watchdog` and `ZmqMonitor` - Remove `sigar` dependency used in building Reviewed By: saifhhasan Differential Revision: D20049944 fbshipit-source-id: 00b90c8558dc5f0fb18cc31a09b9666a47b096fe
-
- 04 Mar, 2020 5 commits
-
-
Haijun Zhu authored
Summary: This seems to not happen reliably and causes rss to grow. The `__dealloc__` cannot fix it completely, although I verified it is called. So calling it explicitly seems to guarantee it to happen. Reviewed By: yfeldblum Differential Revision: D20206887 fbshipit-source-id: 6285a8e8943a53d20714e54efd3220a545010102
-
Yang Chi authored
Summary: as title, just to add a mock function Reviewed By: yfeldblum, lnicco Differential Revision: D20130909 fbshipit-source-id: 469d904cce93dc8e88c5dc4728b1f1fbd0baf798
-
Giuseppe Ottaviano authored
Summary: We have noticed some inappropriate uses of `assume_unreachable()`, and we believe that the documentation does not convey strongly enough that it is not an assertion. This diff moves the implementation to a separate header (as the assertions in there might be misleading) and fleshes out more the intended use cases. Reviewed By: yfeldblum, mkatsevVR, luciang Differential Revision: D20182339 fbshipit-source-id: 8a3be1ada06dead7ea936971c42c4f30389fc23a
-
Yedidya Feldblum authored
Summary: [Folly] Fix `small_vector::insert` with non-random-access iterator arguments. Closes https://github.com/facebook/folly/issues/1322. Reviewed By: ot, terrelln Differential Revision: D20150453 fbshipit-source-id: 184e748dcbb7cb60318b5f0a3104d9aeb8352d7b
-
Amlan Nayak authored
Summary: Codel is statically initialized with some default target delay and interval period. It would be useful to have the ability to update these parameters at runtime to fine tune load shedding to a given use case. Adding methods here to update the target delay and interval parameters. Reviewed By: yfeldblum Differential Revision: D19987838 fbshipit-source-id: 4d67277f38037840883f6d9d5fd2d5f9be760f44
-
- 03 Mar, 2020 4 commits
-
-
Ján authored
Summary: `type_traits` needed for `std::enable_if_t` Reviewed By: yfeldblum, Orvid Differential Revision: D20196749 fbshipit-source-id: 4d4e44c523959dda1f04b452d65880ca3401e036
-
Phil Willoughby authored
Summary: Might as well store the count of newlines in the Log Message - as the field is already padded to <pointersize> bytes by the alignment requirements of the field either side it will not use any more space than the existing `bool` Reviewed By: simpkins Differential Revision: D20200298 fbshipit-source-id: 84cc52898069eae1af5bd0f103d4ab3177c45206
-
Dan Melnic authored
Summary: Add support for futures folly::HighResDuration Reviewed By: kevin-vigor Differential Revision: D19981652 fbshipit-source-id: 4a321fda487d5acdee04d138b0e4f0f10a4119f1
-
Yedidya Feldblum authored
Summary: [Folly] Avoid uses of gflags integer aliases, preferring std integer aliases. Reviewed By: WillerZ, vitaut Differential Revision: D20204609 fbshipit-source-id: e00b183ab2574af7ea064b9602f1ab8efced50b0
-
- 28 Feb, 2020 3 commits
-
-
Nathan Bronson authored
Summary: g++ aggressively inlines F14VectorMap::operator[] calls from some testing loops with the loop index as a key. On platforms that have SSE2 but not SSE4.2 we use a multiplication and xor based bit mixer, which undergoes a strength reduction in optimized builds. Somehow the resulting code miscalculates the result (no minimal repro yet), which causes the tests to persistently fail. This diff blocks the compiler optimization, allowing the tests to pass. Reviewed By: yfeldblum Differential Revision: D19910180 fbshipit-source-id: 6cccba67645481061f923bd7b3e681df573c4039
-
Yedidya Feldblum authored
Summary: [Folly] Let `Init` work without `gflags` support. Reviewed By: simpkins Differential Revision: D20150102 fbshipit-source-id: ceaae7ec3373f46457ba0d2a524b1223dec9961c
-
TJ Yin authored
Reviewed By: vitaut Differential Revision: D20098574 fbshipit-source-id: 409c3c1e7716a38f253fa3d0d8afe615139426cc
-
- 27 Feb, 2020 4 commits
-
-
Saif Hasan authored
Summary: This diff adds fb303 dependency to Open/R. fb303 is FB's open-sourced project which provides basic infrastructure for thrift service e.g. base functions, counters supports etc. Using this in Open/R will allow both internal & external users leverage counters via thrift APIs Reviewed By: xiangxu1121 Differential Revision: D20134243 fbshipit-source-id: 23782ec99dc749dd27dc19f2b2b023f1c229608b
-
Lewis Baker authored
Summary: Adds a few simple benchmarks to get an idea for the overhead of `folly::coro::Task` coroutines. Reviewed By: yfeldblum Differential Revision: D19729527 fbshipit-source-id: cdfbd5c408c24dd258c56bc159af0c03cb1cd55e
-
Andrew Huang authored
Summary: As a step to eventually supporting TLS 1.3 by default for OpenSSL, we want to add the ability to selectively enable TLS 1.3 in folly::SSLContext. Reviewed By: mingtaoy Differential Revision: D20102778 fbshipit-source-id: 0865821ad2730482e797b888d16561b6989dca62
-
Mark Santaniello authored
Summary: We should probably just free this. Reviewed By: yfeldblum Differential Revision: D20119718 fbshipit-source-id: 2a6c79730243b7af5ba90dac631ce0c8e1e0e6a4
-
- 26 Feb, 2020 4 commits
-
-
Dongyi Ye authored
Summary: Add API to Set Socket Option for AsyncUDPServerSocket.h, which is the same as AsyncUDPSocket. Reviewed By: yfeldblum, lnicco Differential Revision: D20064430 fbshipit-source-id: d448fbc217d0098e0ab94e2f113d4eba97958b02
-
TJ Yin authored
Differential Revision: D19882830 fbshipit-source-id: 031217f9890351022bc8d171f0ccd7e045dd6972
-
Dan Melnic authored
Summary: Workaround for a TSAN fork deadlock Reviewed By: kevin-vigor Differential Revision: D20107616 fbshipit-source-id: df4d6222f63131e49fc1e831ec81d6441269b1f4
-
Mark Santaniello authored
Summary: Sanitizers always intercept the allocator, so there's no reason to do the elaborate `usingJEMalloc()` logic -- it will always fail. Reviewed By: yfeldblum Differential Revision: D20056781 fbshipit-source-id: c0d4a3b103e26bacc0a6589f8d54b4a2ec85f771
-
- 25 Feb, 2020 2 commits
-
-
Maged Michael authored
Summary: This makes the function name more accurate. The function does not start the thread pool executor. It only enables the construction and use of a thread pool executor by the default hazptr domain when needed. Reviewed By: davidtgoldblatt Differential Revision: D19852860 fbshipit-source-id: 5ae71d0fd2d2d20c9ca66f45d57e90085703b3fb
-
Max Katsev authored
Summary: clang fails to optimize the current version even in the opt mode code: ``` void clear(folly::small_vector<int, 5>& vec) { vec.clear(); } ``` before: cat_huh ``` 0000000000000000 <clear(folly::small_vector<int, 5ul, void, void, void>&)>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 41 57 push %r15 6: 41 56 push %r14 8: 53 push %rbx 9: 50 push %rax a: 49 89 fe mov %rdi,%r14 d: 48 8b 07 mov (%rdi),%rax 10: 48 8d 4f 08 lea 0x8(%rdi),%rcx 14: 48 85 c0 test %rax,%rax 17: 78 5a js 73 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x73> 19: 48 89 cf mov %rcx,%rdi 1c: 49 bf ff ff ff ff ff movabs $0x7fffffffffffffff,%r15 23: ff ff 7f 26: 48 89 c3 mov %rax,%rbx 29: 4c 21 fb and %r15,%rbx 2c: 74 3a je 68 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x68> 2e: 48 8d 34 9f lea (%rdi,%rbx,4),%rsi 32: 48 85 c0 test %rax,%rax 35: 78 53 js 8a <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x8a> 37: 48 8d 14 99 lea (%rcx,%rbx,4),%rdx 3b: 48 89 d9 mov %rbx,%rcx 3e: 48 29 f2 sub %rsi,%rdx 41: 74 0e je 51 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x51> 43: e8 00 00 00 00 callq 48 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x48> 48: 49 8b 06 mov (%r14),%rax 4b: 48 89 c1 mov %rax,%rcx 4e: 4c 21 f9 and %r15,%rcx 51: 48 c1 e3 02 shl $0x2,%rbx 55: 48 c1 fb 02 sar $0x2,%rbx 59: 48 29 d9 sub %rbx,%rcx 5c: 49 ff c7 inc %r15 5f: 49 21 c7 and %rax,%r15 62: 49 09 cf or %rcx,%r15 65: 4d 89 3e mov %r15,(%r14) 68: 48 83 c4 08 add $0x8,%rsp 6c: 5b pop %rbx 6d: 41 5e pop %r14 6f: 41 5f pop %r15 71: 5d pop %rbp 72: c3 retq 73: 48 8b 39 mov (%rcx),%rdi 76: 49 bf ff ff ff ff ff movabs $0x7fffffffffffffff,%r15 7d: ff ff 7f 80: 48 89 c3 mov %rax,%rbx 83: 4c 21 fb and %r15,%rbx 86: 75 a6 jne 2e <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x2e> 88: eb de jmp 68 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x68> 8a: 48 8b 09 mov (%rcx),%rcx 8d: 48 8d 14 99 lea (%rcx,%rbx,4),%rdx 91: 48 89 d9 mov %rbx,%rcx 94: 48 29 f2 sub %rsi,%rdx 97: 75 aa jne 43 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x43> 99: eb b6 jmp 51 <clear(folly::small_vector<int, 5ul, void, void, void>&)+0x51> ``` after (much better but still 3 instructions too many): ``` 0000000000000000 <clear(folly::small_vector<int, 5ul, void, void, void>&)>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax b: 00 00 80 e: 48 21 07 and %rax,(%rdi) 11: 5d pop %rbp 12: c3 retq ``` Reviewed By: ot, philippv, luciang Differential Revision: D19890921 fbshipit-source-id: 62f1b5325b4deda95976894b476849b5098fad4f
-
- 24 Feb, 2020 10 commits
-
-
Phil Willoughby authored
Summary: This class is intended to be useful when part of your project is using folly logging and part is using glog - simply install this bridge up-front and everything is routed to folly logging. Reviewed By: simpkins Differential Revision: D19952822 fbshipit-source-id: 898846fc7b647ddd93222f46c56450c1454dc738
-
Dan Melnic authored
Summary: Fix set SO_REUSEPORT error message, save errno, use throwSystemErrorExplicit (Note: this ignores all push blocking failures!) Reviewed By: vitaut Differential Revision: D20052057 fbshipit-source-id: 2f1b3135ff84242aa7ad38d3063ef9e260c3127c
-
Dan Melnic authored
Summary: Use folly::sizedFree for the ext buffer Reviewed By: yfeldblum Differential Revision: D19934204 fbshipit-source-id: 63662ab547f15addc7cdb249704964dfc70ca1f3
-
Chad Austin authored
Summary: Instead of using a Linux-specific API for random numbers, use std::minstd_rand. It's not precisely identical, but probably sufficient for these tests. Reviewed By: yfeldblum Differential Revision: D20039048 fbshipit-source-id: 5ace1a0552f995a48b37e4fa2209394f1b28ca84
-
Widagdo Setiawan authored
Summary: Fix signed/unsigned mismatch in json.cpp Reviewed By: yfeldblum, jdonald Differential Revision: D19671088 fbshipit-source-id: 4bc1f4111e0536aa22c7fd03a2a6a6d786b7cfc8
-
Shrikrishna Khare authored
Summary: The SAI diag shell implementation requires Python3.7.6. Previous diff in the stack added Python3.7.6 manifest. Make use of it to build diag shell and link with Python lib. Differential Revision: D20064315 fbshipit-source-id: c855f8a9f554066e8150ce1d867828a84161961b
-
Shrikrishna Khare authored
Summary: As titled. FBOSS depends on Python3.7.6, subsequent diff in the stack adds Python3.7.6 depedency for FBOSS. Differential Revision: D20064316 fbshipit-source-id: 27b328dc25e326f3927ea6cb003fb7bb45732d61
-
Maged Michael authored
Summary: Add function `get_process_phase` that returns indicators of process phases: - `ProcessPhase::Init`: Not all global variables may have been initialized. - `ProcessPhase::Regular`: All globals have been initialized and have not been destroyed. - `ProcessPhase::Exit`: Some globals may have been destroyed. Add function `set_process_phases` and calls to it from `folly::init` and `common/init/Init.cpp` wherever `SingletonVault::singleton()->registrationComplete` is called. Will add calls to `set_process_phases` in separate diffs to other places that call `registrationComplete ` directly. See Section 6.9.3 Start and termination [basic.start] of the C++ Standard Working Draft [N4849](https://github.com/cplusplus/draft/releases/download/n4849/n4849.pdf). In general this addition is useful for simplifying cases of dependence on the existence of certain globals during main, where it is safe to ignore such globals at shutdown. For example, the destructor of `hazptr_obj_cohort` normally needs to access the default `hazptr_domain`, but it is safe to skip that access at shutdown. Reviewed By: yfeldblum Differential Revision: D19567170 fbshipit-source-id: a44cbd3301aa9dc77a1e992922403635a3ff6552
-
Lukas Piatkowski authored
Summary: (Note: this ignores all push blocking failures!) Reviewed By: farnz Differential Revision: D19948740 fbshipit-source-id: 9d0cfc4ccbcb3c08bb969f23229ed3096470fa86
-
Giuseppe Ottaviano authored
Summary: Having the fallbacks in the public header files makes searching for classes/methods cumbersome, and some people have mistakenly assumed that F14 classes inherit from `unordered_*` because they landed on the wrong line. In addition, when the fallback implementation is used, any compilation errors will come from the `*Fallback.h` files, making it clear that the main implementation is not being selected. Reviewed By: yfeldblum Differential Revision: D19926873 fbshipit-source-id: 492b0c252f33c0cbbf3c22dae38fa0bd63825f72
-
- 23 Feb, 2020 2 commits
-
-
Giuseppe Ottaviano authored
Summary: Capacity is known in almost all the modes (except when it's inferred from `malloc_usable_size`, which is probably something we should not do in the first place), so we can easily plug in sized deallocation. Reviewed By: yfeldblum Differential Revision: D19976657 fbshipit-source-id: cb03f7107195af614514645c88d12ac4999dea53
-
Misha Shneerson authored
Summary: rootid is the thing we use to correlate running Thrift requests with a folly::RequestContext. The problem is that today rootid is unique only for active requests but not unique throughout the lifetime of the process - as a consequence we see some subtle bugs like mistakenly attributing threads to already finished requests. The root cause of rootid collisions is that default implementation of rootid is just an address of folly::RequestContext - so once request finishes the address is reused. The solution suggested here is to assign rootids explicitly when folly::RequestContext is set for the request. To construct such rootid we pack two counters: * 12 MSB are dedicated to an ID of Cpp2Worker (should be more than enough) * 51 LSB are dedicated to a running counter within Cpp2Worker. (Note: this ignores all push blocking failures!) Reviewed By: andriigrynenko Differential Revision: D20036950 fbshipit-source-id: 76687db12a32f33c82ce86accb4cdaab3e981458
-
- 22 Feb, 2020 3 commits
-
-
Luca Niccolini authored
Summary: generic API for setting socket options on a UDP socket (Note: this ignores all push blocking failures!) Reviewed By: yangchi Differential Revision: D19763927 fbshipit-source-id: d1a7720b04c24592e98c6e30c93c26e650ccd0b0
-
Luca Niccolini authored
Summary: delete the folly::AsyncSocket::OptionMap/OptionKey/emptyOptionMap aliases Reviewed By: yangchi Differential Revision: D19963346 fbshipit-source-id: 6beae0961a82d12efd4d784ec390031d9445cd2b
-
Luca Niccolini authored
Summary: base diff to move AsyncSocket::OptionMap into SocketOptionMap. folly only changes and an alias for previous usages of AsyncSocket::OptionMap Reviewed By: yangchi Differential Revision: D19961899 fbshipit-source-id: fab060cc73409c77ea07ced663fbd0ee15a35be7
-