Skip to content

Commit 23f0f7f

Browse files
committed
issue: 1792164 Extend VMA_INTERNAL_THREAD_ARM_CQ variable
Flexible tunning is added to control RX and TX polling. Signed-off-by: Igor Ivanov <[email protected]>
1 parent b0a9bb0 commit 23f0f7f

File tree

9 files changed

+145
-91
lines changed

9 files changed

+145
-91
lines changed

README.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,11 +830,15 @@ timer expiration (once every 100ms). Application threads may be blocked till in
830830
Default value is 0 (deferred handling)
831831

832832
VMA_INTERNAL_THREAD_ARM_CQ
833-
Wakeup the internal thread for each packet that the CQ receive.
833+
Wakeup the internal thread for activity on TX/RX CQ.
834834
Poll and process the packet and bring it to the socket layer.
835835
This can minimize latency in case of a busy application which is not available to
836836
receive the packet when it arrived.
837837
However, this might decrease performance in case of high pps rate application.
838+
Disable Arm CQ is 0
839+
Check RX CQ is 1
840+
Check TX CQ is 2
841+
Check all CQs is 3
838842
Default value is 0 (Disabled)
839843

840844
VMA_WAIT_AFTER_JOIN_MSEC

src/vma/dev/net_device_val.cpp

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ const char* ring_alloc_logic_attr::to_str()
179179
return m_str;
180180
}
181181

182-
net_device_val::net_device_val(struct net_device_val_desc *desc) : m_lock("net_device_val lock")
182+
net_device_val::net_device_val(struct net_device_val_desc *desc) :
183+
m_lock("net_device_val lock"),
184+
m_sysvar_internal_thread_arm_cq(safe_mce_sys().internal_thread_arm_cq)
183185
{
184186
bool valid = false;
185187
ib_ctx_handler* ib_ctx;
@@ -1133,28 +1135,32 @@ int net_device_val::global_ring_poll_and_process_element(uint64_t *p_poll_sn, vo
11331135
auto_unlocker lock(m_lock);
11341136
rings_hash_map_t::iterator ring_iter;
11351137
for (ring_iter = m_h_ring_map.begin(); ring_iter != m_h_ring_map.end(); ring_iter++) {
1136-
int ret = THE_RING->poll_and_process_element_rx(p_poll_sn, pv_fd_ready_array);
1137-
BULLSEYE_EXCLUDE_BLOCK_START
1138-
if (ret < 0 && errno != EAGAIN) {
1139-
nd_logerr("Error in RX ring->poll_and_process_element() of %p (errno=%d %m)", THE_RING, errno);
1140-
return ret;
1141-
}
1142-
BULLSEYE_EXCLUDE_BLOCK_END
1143-
if (ret > 0) {
1144-
nd_logfunc("ring[%p] RX Returned with: %d (sn=%d)", THE_RING, ret, *p_poll_sn);
1145-
ret_total += ret;
1138+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_RX) {
1139+
int ret = THE_RING->poll_and_process_element_rx(p_poll_sn, pv_fd_ready_array);
1140+
BULLSEYE_EXCLUDE_BLOCK_START
1141+
if (ret < 0 && errno != EAGAIN) {
1142+
nd_logerr("Error in RX ring->poll_and_process_element() of %p (errno=%d %m)", THE_RING, errno);
1143+
return ret;
1144+
}
1145+
BULLSEYE_EXCLUDE_BLOCK_END
1146+
if (ret > 0) {
1147+
nd_logfunc("ring[%p] RX Returned with: %d (sn=%d)", THE_RING, ret, *p_poll_sn);
1148+
ret_total += ret;
1149+
}
11461150
}
11471151

1148-
ret = THE_RING->poll_and_process_element_tx(p_poll_sn);
1149-
BULLSEYE_EXCLUDE_BLOCK_START
1150-
if (ret < 0 && errno != EAGAIN) {
1151-
nd_logerr("Error in TX ring->poll_and_process_element() of %p (errno=%d %m)", THE_RING, errno);
1152-
return ret;
1153-
}
1154-
BULLSEYE_EXCLUDE_BLOCK_END
1155-
if (ret > 0) {
1156-
nd_logfunc("ring[%p] TX Returned with: %d (sn=%d)", THE_RING, ret, *p_poll_sn);
1157-
ret_total += ret;
1152+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_TX) {
1153+
int ret = THE_RING->poll_and_process_element_tx(p_poll_sn);
1154+
BULLSEYE_EXCLUDE_BLOCK_START
1155+
if (ret < 0 && errno != EAGAIN) {
1156+
nd_logerr("Error in TX ring->poll_and_process_element() of %p (errno=%d %m)", THE_RING, errno);
1157+
return ret;
1158+
}
1159+
BULLSEYE_EXCLUDE_BLOCK_END
1160+
if (ret > 0) {
1161+
nd_logfunc("ring[%p] TX Returned with: %d (sn=%d)", THE_RING, ret, *p_poll_sn);
1162+
ret_total += ret;
1163+
}
11581164
}
11591165
}
11601166
return ret_total;
@@ -1166,25 +1172,29 @@ int net_device_val::global_ring_request_notification(uint64_t poll_sn)
11661172
auto_unlocker lock(m_lock);
11671173
rings_hash_map_t::iterator ring_iter;
11681174
for (ring_iter = m_h_ring_map.begin(); ring_iter != m_h_ring_map.end(); ring_iter++) {
1169-
int ret = THE_RING->request_notification(CQT_RX, poll_sn);
1170-
BULLSEYE_EXCLUDE_BLOCK_START
1171-
if (ret < 0) {
1172-
nd_logerr("Error RX ring[%p]->request_notification() (errno=%d %m)", THE_RING, errno);
1173-
return ret;
1175+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_RX) {
1176+
int ret = THE_RING->request_notification(CQT_RX, poll_sn);
1177+
BULLSEYE_EXCLUDE_BLOCK_START
1178+
if (ret < 0) {
1179+
nd_logerr("Error RX ring[%p]->request_notification() (errno=%d %m)", THE_RING, errno);
1180+
return ret;
1181+
}
1182+
BULLSEYE_EXCLUDE_BLOCK_END
1183+
nd_logfunc("ring[%p] RX Returned with: %d (sn=%d)", THE_RING, ret, poll_sn);
1184+
ret_total += ret;
11741185
}
1175-
BULLSEYE_EXCLUDE_BLOCK_END
1176-
nd_logfunc("ring[%p] RX Returned with: %d (sn=%d)", THE_RING, ret, poll_sn);
1177-
ret_total += ret;
11781186

1179-
ret = THE_RING->request_notification(CQT_TX, poll_sn);
1180-
BULLSEYE_EXCLUDE_BLOCK_START
1181-
if (ret < 0) {
1182-
nd_logerr("Error TX ring[%p]->request_notification() (errno=%d %m)", THE_RING, errno);
1183-
return ret;
1187+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_TX) {
1188+
int ret = THE_RING->request_notification(CQT_TX, poll_sn);
1189+
BULLSEYE_EXCLUDE_BLOCK_START
1190+
if (ret < 0) {
1191+
nd_logerr("Error TX ring[%p]->request_notification() (errno=%d %m)", THE_RING, errno);
1192+
return ret;
1193+
}
1194+
BULLSEYE_EXCLUDE_BLOCK_END
1195+
nd_logfunc("ring[%p] TX Returned with: %d (sn=%d)", THE_RING, ret, poll_sn);
1196+
ret_total += ret;
11841197
}
1185-
BULLSEYE_EXCLUDE_BLOCK_END
1186-
nd_logfunc("ring[%p] TX Returned with: %d (sn=%d)", THE_RING, ret, poll_sn);
1187-
ret_total += ret;
11881198
}
11891199
return ret_total;
11901200
}

src/vma/dev/net_device_val.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,9 @@ class net_device_val
316316
std::string m_name; /* container for ifname */
317317
char m_str[BUFF_SIZE]; /* detailed information about device */
318318
char m_base_name[IFNAMSIZ]; /* base name of device basing ifname */
319+
320+
/* Global environment variables section */
321+
const int m_sysvar_internal_thread_arm_cq;
319322
};
320323

321324
class net_device_val_eth : public net_device_val

src/vma/event/event_handler_manager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ void event_handler_manager::register_command_event(int fd, command* cmd)
229229

230230
event_handler_manager::event_handler_manager() :
231231
m_reg_action_q_lock("reg_action_q_lock"),
232-
m_b_sysvar_internal_thread_arm_cq_enabled(safe_mce_sys().internal_thread_arm_cq_enabled),
232+
m_b_sysvar_internal_thread_arm_cq_enabled(safe_mce_sys().internal_thread_arm_cq),
233233
m_n_sysvar_vma_time_measure_num_samples(safe_mce_sys().vma_time_measure_num_samples),
234234
m_n_sysvar_timer_resolution_msec(safe_mce_sys().timer_resolution_msec)
235235
{

src/vma/iomux/epfd_info.cpp

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ int epfd_info::remove_fd_from_epoll_os(int fd)
5555

5656
epfd_info::epfd_info(int epfd, int size) :
5757
lock_mutex_recursive("epfd_info"), m_epfd(epfd), m_size(size), m_ring_map_lock("epfd_ring_map_lock"),
58-
m_lock_poll_os("epfd_lock_poll_os"), m_sysvar_thread_mode(safe_mce_sys().thread_mode),
59-
m_b_os_data_available(false)
58+
m_lock_poll_os("epfd_lock_poll_os"),
59+
m_b_os_data_available(false),
60+
m_sysvar_thread_mode(safe_mce_sys().thread_mode),
61+
m_sysvar_internal_thread_arm_cq(safe_mce_sys().internal_thread_arm_cq)
6062
{
6163
__log_funcall("");
64+
6265
int max_sys_fd = get_sys_max_fd_num();
6366
if (m_size<=max_sys_fd)
6467
{
@@ -609,30 +612,34 @@ int epfd_info::ring_poll_and_process_element(uint64_t *p_poll_sn, void* pv_fd_re
609612
m_ring_map_lock.lock();
610613

611614
for (ring_map_t::iterator iter = m_ring_map.begin(); iter != m_ring_map.end(); iter++) {
612-
int ret = iter->first->poll_and_process_element_rx(p_poll_sn, pv_fd_ready_array);
613-
BULLSEYE_EXCLUDE_BLOCK_START
614-
if (ret < 0 && errno != EAGAIN) {
615-
__log_err("Error in RX ring->poll_and_process_element() of %p (errno=%d %m)", iter->first, errno);
616-
m_ring_map_lock.unlock();
617-
return ret;
618-
}
619-
BULLSEYE_EXCLUDE_BLOCK_END
620-
if (ret > 0) {
621-
__log_func("ring[%p] RX Returned with: %d (sn=%d)", iter->first, ret, *p_poll_sn);
622-
ret_total += ret;
615+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_RX) {
616+
int ret = iter->first->poll_and_process_element_rx(p_poll_sn, pv_fd_ready_array);
617+
BULLSEYE_EXCLUDE_BLOCK_START
618+
if (ret < 0 && errno != EAGAIN) {
619+
__log_err("Error in RX ring->poll_and_process_element() of %p (errno=%d %m)", iter->first, errno);
620+
m_ring_map_lock.unlock();
621+
return ret;
622+
}
623+
BULLSEYE_EXCLUDE_BLOCK_END
624+
if (ret > 0) {
625+
__log_func("ring[%p] RX Returned with: %d (sn=%d)", iter->first, ret, *p_poll_sn);
626+
ret_total += ret;
627+
}
623628
}
624629

625-
ret = iter->first->poll_and_process_element_tx(p_poll_sn);
626-
BULLSEYE_EXCLUDE_BLOCK_START
627-
if (ret < 0 && errno != EAGAIN) {
628-
__log_err("Error in TX ring->poll_and_process_element() of %p (errno=%d %m)", iter->first, errno);
629-
m_ring_map_lock.unlock();
630-
return ret;
631-
}
632-
BULLSEYE_EXCLUDE_BLOCK_END
633-
if (ret > 0) {
634-
__log_func("ring[%p] TX Returned with: %d (sn=%d)", iter->first, ret, *p_poll_sn);
635-
ret_total += ret;
630+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_TX) {
631+
int ret = iter->first->poll_and_process_element_tx(p_poll_sn);
632+
BULLSEYE_EXCLUDE_BLOCK_START
633+
if (ret < 0 && errno != EAGAIN) {
634+
__log_err("Error in TX ring->poll_and_process_element() of %p (errno=%d %m)", iter->first, errno);
635+
m_ring_map_lock.unlock();
636+
return ret;
637+
}
638+
BULLSEYE_EXCLUDE_BLOCK_END
639+
if (ret > 0) {
640+
__log_func("ring[%p] TX Returned with: %d (sn=%d)", iter->first, ret, *p_poll_sn);
641+
ret_total += ret;
642+
}
636643
}
637644
}
638645

@@ -660,27 +667,31 @@ int epfd_info::ring_request_notification(uint64_t poll_sn)
660667
m_ring_map_lock.lock();
661668

662669
for (ring_map_t::iterator iter = m_ring_map.begin(); iter != m_ring_map.end(); iter++) {
663-
int ret = iter->first->request_notification(CQT_RX, poll_sn);
664-
BULLSEYE_EXCLUDE_BLOCK_START
665-
if (ret < 0) {
666-
__log_err("Error RX ring[%p]->request_notification() (errno=%d %m)", iter->first, errno);
667-
m_ring_map_lock.unlock();
668-
return ret;
670+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_RX) {
671+
int ret = iter->first->request_notification(CQT_RX, poll_sn);
672+
BULLSEYE_EXCLUDE_BLOCK_START
673+
if (ret < 0) {
674+
__log_err("Error RX ring[%p]->request_notification() (errno=%d %m)", iter->first, errno);
675+
m_ring_map_lock.unlock();
676+
return ret;
677+
}
678+
BULLSEYE_EXCLUDE_BLOCK_END
679+
__log_func("ring[%p] RX Returned with: %d (sn=%d)", iter->first, ret, poll_sn);
680+
ret_total += ret;
669681
}
670-
BULLSEYE_EXCLUDE_BLOCK_END
671-
__log_func("ring[%p] RX Returned with: %d (sn=%d)", iter->first, ret, poll_sn);
672-
ret_total += ret;
673682

674-
ret = iter->first->request_notification(CQT_TX, poll_sn);
675-
BULLSEYE_EXCLUDE_BLOCK_START
676-
if (ret < 0) {
677-
__log_err("Error TX ring[%p]->request_notification() (errno=%d %m)", iter->first, errno);
678-
m_ring_map_lock.unlock();
679-
return ret;
683+
if (m_sysvar_internal_thread_arm_cq & mce_sys_var::ARM_CQ_TX) {
684+
int ret = iter->first->request_notification(CQT_TX, poll_sn);
685+
BULLSEYE_EXCLUDE_BLOCK_START
686+
if (ret < 0) {
687+
__log_err("Error TX ring[%p]->request_notification() (errno=%d %m)", iter->first, errno);
688+
m_ring_map_lock.unlock();
689+
return ret;
690+
}
691+
BULLSEYE_EXCLUDE_BLOCK_END
692+
__log_func("ring[%p] TX Returned with: %d (sn=%d)", iter->first, ret, poll_sn);
693+
ret_total += ret;
680694
}
681-
BULLSEYE_EXCLUDE_BLOCK_END
682-
__log_func("ring[%p] TX Returned with: %d (sn=%d)", iter->first, ret, poll_sn);
683-
ret_total += ret;
684695
}
685696

686697
m_ring_map_lock.unlock();

src/vma/iomux/epfd_info.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,16 @@ class epfd_info : public lock_mutex_recursive, public cleanable_obj, public wake
129129
ring_map_t m_ring_map;
130130
lock_mutex_recursive m_ring_map_lock;
131131
lock_spin m_lock_poll_os;
132-
const thread_mode_t m_sysvar_thread_mode;
133132
ready_cq_fd_q_t m_ready_cq_fd_q;
134133
epoll_stats_t m_local_stats;
135134
epoll_stats_t *m_stats;
136135
int m_log_invalid_events;
137136
bool m_b_os_data_available; // true when non offloaded data is available
138137

138+
/* Global environment variables section */
139+
const thread_mode_t m_sysvar_thread_mode;
140+
const int m_sysvar_internal_thread_arm_cq;
141+
139142
int add_fd(int fd, epoll_event *event);
140143
int del_fd(int fd, bool passthrough = false);
141144
int mod_fd(int fd, epoll_event *event);

src/vma/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ void print_vma_global_settings()
532532
VLOG_PARAM_NUMBER("Delay after join (msec)", safe_mce_sys().wait_after_join_msec, MCE_DEFAULT_WAIT_AFTER_JOIN_MSEC, SYS_VAR_WAIT_AFTER_JOIN_MSEC);
533533
VLOG_STR_PARAM_STRING("Internal Thread Affinity", safe_mce_sys().internal_thread_affinity_str, MCE_DEFAULT_INTERNAL_THREAD_AFFINITY_STR, SYS_VAR_INTERNAL_THREAD_AFFINITY, safe_mce_sys().internal_thread_affinity_str);
534534
VLOG_STR_PARAM_STRING("Internal Thread Cpuset", safe_mce_sys().internal_thread_cpuset, MCE_DEFAULT_INTERNAL_THREAD_CPUSET, SYS_VAR_INTERNAL_THREAD_CPUSET, safe_mce_sys().internal_thread_cpuset);
535-
VLOG_PARAM_STRING("Internal Thread Arm CQ", safe_mce_sys().internal_thread_arm_cq_enabled, MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ_ENABLED, SYS_VAR_INTERNAL_THREAD_ARM_CQ, safe_mce_sys().internal_thread_arm_cq_enabled ? "Enabled " : "Disabled");
535+
VLOG_PARAM_STRING("Internal Thread Arm CQ", safe_mce_sys().internal_thread_arm_cq, MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ, SYS_VAR_INTERNAL_THREAD_ARM_CQ, safe_mce_sys().arm_cq_str((mce_sys_var::arm_cq_t)safe_mce_sys().internal_thread_arm_cq));
536536
VLOG_PARAM_NUMSTR("Internal Thread TCP Handling", safe_mce_sys().internal_thread_tcp_timer_handling, MCE_DEFAULT_INTERNAL_THREAD_TCP_TIMER_HANDLING, SYS_VAR_INTERNAL_THREAD_TCP_TIMER_HANDLING, internal_thread_tcp_timer_handling_str(safe_mce_sys().internal_thread_tcp_timer_handling));
537537
VLOG_PARAM_STRING("Thread mode", safe_mce_sys().thread_mode, MCE_DEFAULT_THREAD_MODE, SYS_VAR_THREAD_MODE, thread_mode_str(safe_mce_sys().thread_mode));
538538
VLOG_PARAM_NUMSTR("Buffer batching mode", safe_mce_sys().buffer_batching_mode, MCE_DEFAULT_BUFFER_BATCHING_MODE, SYS_VAR_BUFFER_BATCHING_MODE, buffer_batching_mode_str(safe_mce_sys().buffer_batching_mode));

src/vma/util/sys_vars.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ void mce_sys_var::get_env_params()
583583
progress_engine_wce_max = MCE_DEFAULT_PROGRESS_ENGINE_WCE_MAX;
584584
cq_keep_qp_full = MCE_DEFAULT_CQ_KEEP_QP_FULL;
585585
qp_compensation_level = MCE_DEFAULT_QP_COMPENSATION_LEVEL;
586-
internal_thread_arm_cq_enabled = MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ_ENABLED;
586+
internal_thread_arm_cq = MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ;
587587

588588
offloaded_sockets = MCE_DEFAULT_OFFLOADED_SOCKETS;
589589
timer_resolution_msec = MCE_DEFAULT_TIMER_RESOLUTION_MSEC;
@@ -1161,12 +1161,16 @@ void mce_sys_var::get_env_params()
11611161
tcp_timer_resolution_msec = timer_resolution_msec;
11621162
}
11631163

1164-
if ((env_ptr = getenv(SYS_VAR_INTERNAL_THREAD_ARM_CQ)) != NULL)
1165-
internal_thread_arm_cq_enabled = atoi(env_ptr) ? true : false;
1164+
if ((env_ptr = getenv(SYS_VAR_INTERNAL_THREAD_ARM_CQ)) != NULL) {
1165+
internal_thread_arm_cq = (arm_cq_t)atoi(env_ptr);
1166+
if (internal_thread_arm_cq < 0 || internal_thread_arm_cq > mce_sys_var::ARM_CQ_ALL) {
1167+
internal_thread_arm_cq = MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ;
1168+
}
1169+
}
11661170

1167-
if ((env_ptr = getenv(SYS_VAR_INTERNAL_THREAD_CPUSET)) != NULL) {
1168-
snprintf(internal_thread_cpuset, FILENAME_MAX, "%s", env_ptr);
1169-
}
1171+
if ((env_ptr = getenv(SYS_VAR_INTERNAL_THREAD_CPUSET)) != NULL) {
1172+
snprintf(internal_thread_cpuset, FILENAME_MAX, "%s", env_ptr);
1173+
}
11701174

11711175
// handle internal thread affinity - default is CPU-0
11721176
if ((env_ptr = getenv(SYS_VAR_INTERNAL_THREAD_AFFINITY)) != NULL) {

src/vma/util/sys_vars.h

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,25 @@ struct mce_sys_var {
296296
HYPER_VMWARE
297297
};
298298

299+
enum arm_cq_t {
300+
ARM_CQ_OFF = 0,
301+
ARM_CQ_RX = 0x01,
302+
ARM_CQ_TX = 0x02,
303+
ARM_CQ_ALL = 0x03
304+
} ;
305+
306+
inline const char* arm_cq_str(arm_cq_t value)
307+
{
308+
switch (value) {
309+
case ARM_CQ_OFF: return "(Disabled)";
310+
case ARM_CQ_RX: return "(Arm RX CQ)";
311+
case ARM_CQ_TX: return "(Arm TX CQ)";
312+
case ARM_CQ_ALL: return "(Arm All)";
313+
default: break;
314+
}
315+
return "unsupported";
316+
}
317+
299318
public:
300319
void get_env_params();
301320

@@ -406,7 +425,7 @@ struct mce_sys_var {
406425
char internal_thread_cpuset[FILENAME_MAX];
407426
char internal_thread_affinity_str[FILENAME_MAX];
408427
cpu_set_t internal_thread_affinity;
409-
bool internal_thread_arm_cq_enabled;
428+
int internal_thread_arm_cq;
410429
internal_thread_tcp_timer_handling_t internal_thread_tcp_timer_handling;
411430
bool handle_bf;
412431

@@ -647,7 +666,7 @@ extern mce_sys_var & safe_mce_sys();
647666
#define MCE_DEFAULT_PROGRESS_ENGINE_WCE_MAX (10000)
648667
#define MCE_DEFAULT_CQ_KEEP_QP_FULL (true)
649668
#define MCE_DEFAULT_QP_COMPENSATION_LEVEL (256)
650-
#define MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ_ENABLED (false)
669+
#define MCE_DEFAULT_INTERNAL_THREAD_ARM_CQ (mce_sys_var::ARM_CQ_OFF)
651670
#define MCE_DEFAULT_QP_FORCE_MC_ATTACH (false)
652671
#define MCE_DEFAULT_OFFLOADED_SOCKETS (true)
653672
#define MCE_DEFAULT_TIMER_RESOLUTION_MSEC (10)

0 commit comments

Comments
 (0)