summaryrefslogtreecommitdiff
path: root/bbq/tests
diff options
context:
space:
mode:
authorliuyu <[email protected]>2024-07-01 23:14:39 -0400
committerliuyu <[email protected]>2024-07-01 23:14:39 -0400
commitd7b76b021a24a1090b41c5cddca10a70f731a2b4 (patch)
treeee9c9d0fe2249fe6187158c1945d7c873a1c4a9c /bbq/tests
parent075525658564b863fe6feec425b2fe878575e3c7 (diff)
性能优化,cache line对齐dev-single
Diffstat (limited to 'bbq/tests')
-rw-r--r--bbq/tests/common/test_queue.c4
-rw-r--r--bbq/tests/unittest/ut_head_cursor.cc28
-rw-r--r--bbq/tests/unittest/ut_mix.cc28
3 files changed, 43 insertions, 17 deletions
diff --git a/bbq/tests/common/test_queue.c b/bbq/tests/common/test_queue.c
index e72f1ee..045e63c 100644
--- a/bbq/tests/common/test_queue.c
+++ b/bbq/tests/common/test_queue.c
@@ -1,6 +1,6 @@
/*
* @Author: liuyu
- * @LastEditTime: 2024-07-01 03:56:01
+ * @LastEditTime: 2024-07-01 05:23:47
* @Describe: TODO
*/
@@ -24,7 +24,7 @@ uint32_t test_bbq_enqueue_burst(void *ring, void **obj_table, uint32_t n, uint16
}
int test_queue_init_bbq(test_cfg *cfg, test_queue_s *q) {
-#if 1
+#if 0
// 开启了BBQ_F_ENABLE_STAT 会导致性能下降
unsigned int flags = BBQ_F_RETRY_NEW | BBQ_F_ENABLE_STAT;
#else
diff --git a/bbq/tests/unittest/ut_head_cursor.cc b/bbq/tests/unittest/ut_head_cursor.cc
index bbd2296..3c25d9d 100644
--- a/bbq/tests/unittest/ut_head_cursor.cc
+++ b/bbq/tests/unittest/ut_head_cursor.cc
@@ -1,6 +1,6 @@
/*
* @Author: liuyu
- * @LastEditTime: 2024-07-01 03:57:33
+ * @LastEditTime: 2024-07-01 22:34:42
* @Describe: TODO
*/
@@ -33,13 +33,13 @@ class bbq_head_cursor : public testing::Test { // 继承了 testing::Test
};
void expect_phead(struct bbq *q, uint64_t idx, uint64_t vsn, int line) {
- uint64_t ph = bbq_atomic64_load(&q->phead);
+ uint64_t ph = bbq_atomic64_load(&q->phead.value);
EXPECT_EQ(bbq_head_idx(q, ph), idx) << "line: " << line;
EXPECT_EQ(bbq_head_vsn(q, ph), vsn) << "line: " << line;
}
void expect_chead(struct bbq *q, uint64_t idx, uint64_t vsn, int line) {
- uint64_t ch = bbq_atomic64_load(&q->chead);
+ uint64_t ch = bbq_atomic64_load(&q->chead.value);
EXPECT_EQ(bbq_head_idx(q, ch), idx) << "line: " << line;
EXPECT_EQ(bbq_head_vsn(q, ch), vsn) << "line: " << line;
}
@@ -78,8 +78,8 @@ TEST_F(bbq_head_cursor, init) {
// 1.初始化状态,除了第一个block外其他块的4个游标都指向最后一个条目
- EXPECT_EQ(bbq_atomic64_load(&q->phead), 0);
- EXPECT_EQ(bbq_atomic64_load(&q->chead), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->phead.value), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->chead.value), 0);
expect_eq_allocated(q, &q->blocks[0], 0, 0, __LINE__);
expect_eq_committed(q, &q->blocks[0], 0, 0, __LINE__);
@@ -115,8 +115,8 @@ void ut_produce_something(uint32_t produce_cnt) {
EXPECT_TRUE(ret == BBQ_OK);
}
- EXPECT_EQ(bbq_atomic64_load(&q->phead), 0);
- EXPECT_EQ(bbq_atomic64_load(&q->chead), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->phead.value), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->chead.value), 0);
expect_eq_allocated(q, &q->blocks[0], produce_cnt, 0, __LINE__);
expect_eq_committed(q, &q->blocks[0], produce_cnt, 0, __LINE__);
expect_eq_reserved(q, &q->blocks[0], 0, 0, __LINE__);
@@ -129,8 +129,8 @@ void ut_produce_something(uint32_t produce_cnt) {
EXPECT_EQ(dequeue_data, TEST_DATA_MAGIC);
}
- EXPECT_EQ(bbq_atomic64_load(&q->phead), 0);
- EXPECT_EQ(bbq_atomic64_load(&q->chead), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->phead.value), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->chead.value), 0);
expect_eq_allocated(q, &q->blocks[0], produce_cnt, 0, __LINE__);
expect_eq_committed(q, &q->blocks[0], produce_cnt, 0, __LINE__);
expect_eq_reserved(q, &q->blocks[0], produce_cnt, 0, __LINE__);
@@ -174,7 +174,7 @@ void ut_produce_next_block(uint32_t over) {
EXPECT_TRUE(ret == BBQ_OK);
}
- EXPECT_EQ(bbq_atomic64_load(&q->chead), 0);
+ EXPECT_EQ(bbq_atomic64_load(&q->chead.value), 0);
expect_phead(q, 1, 0, __LINE__);
expect_eq_allocated(q, &q->blocks[0], bs, 0, __LINE__);
expect_eq_committed(q, &q->blocks[0], bs, 0, __LINE__);
@@ -301,8 +301,8 @@ TEST_F(bbq_head_cursor, retry_new_full_empty) {
EXPECT_TRUE(ret == BBQ_ERR_FULL);
}
- ph = bbq_atomic64_load(&q->phead);
- ch = bbq_atomic64_load(&q->chead);
+ ph = bbq_atomic64_load(&q->phead.value);
+ ch = bbq_atomic64_load(&q->chead.value);
if (i == 0) {
EXPECT_EQ((ph + 1) & q->idx_mask, ch & q->idx_mask);
} else {
@@ -329,8 +329,8 @@ TEST_F(bbq_head_cursor, retry_new_full_empty) {
EXPECT_TRUE(ret == BBQ_ERR_EMPTY);
}
- ph = bbq_atomic64_load(&q->phead);
- ch = bbq_atomic64_load(&q->chead);
+ ph = bbq_atomic64_load(&q->phead.value);
+ ch = bbq_atomic64_load(&q->chead.value);
EXPECT_EQ(ph & q->idx_mask, ch & q->idx_mask);
for (uint32_t i = 0; i < q->bn; i++) {
EXPECT_EQ(bbq_atomic64_load(&q->blocks[i].committed) & q->off_mask, q->bs);
diff --git a/bbq/tests/unittest/ut_mix.cc b/bbq/tests/unittest/ut_mix.cc
index cd545bf..81b362f 100644
--- a/bbq/tests/unittest/ut_mix.cc
+++ b/bbq/tests/unittest/ut_mix.cc
@@ -1,6 +1,6 @@
/*
* @Author: liuyu
- * @LastEditTime: 2024-06-27 07:25:43
+ * @LastEditTime: 2024-07-01 23:09:56
* @Describe: bbq除了队列操作外,其他函数的测试
*/
@@ -148,3 +148,29 @@ TEST_F(bbq_mix, bbq_block_number_calc) {
}
}
}
+
+#define OFFSETOF(type, member) ((size_t) & ((type *)0)->member)
+#define PRINT_OFFSETOF(type, member) printf("Offset of '%s' in '%s' is %zu\n", #member, #type, OFFSETOF(type, member))
+#define PTR_ALIGNED_64(ptr) (((uintptr_t)ptr & (64 - 1)) == 0)
+
+TEST_F(bbq_mix, bbq_cache_line) {
+
+ // 创建队列
+ struct bbq *q = bbq_create("test_bbq", 4096, BBQ_SOCKET_ID_ANY, BBQ_F_RETRY_NEW, NULL, NULL);
+ printf("q:%p\n", q);
+ ASSERT_NE(q, nullptr);
+
+ // 首地址64字节对齐
+ ASSERT_EQ(PTR_ALIGNED_64(q), true);
+
+ // 关键成员64字节对齐
+ ASSERT_EQ(PTR_ALIGNED_64(&q->name), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->socket_id), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->phead), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->chead), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->blocks), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->blocks[0].committed), true);
+ ASSERT_EQ(PTR_ALIGNED_64(&q->blocks[0].entries), true);
+
+ bbq_destory(q);
+} \ No newline at end of file