0001-Implement-benchmark_slru_page_readonly-to-assess-SLR.patch
application/octet-stream
Filename: 0001-Implement-benchmark_slru_page_readonly-to-assess-SLR.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Implement benchmark_slru_page_readonly() to assess SLRU perfromance
| File | + | − |
|---|---|---|
| src/test/modules/test_slru/test_slru--1.0.sql | 2 | 0 |
| src/test/modules/test_slru/test_slru.c | 18 | 0 |
From 4888ae7664224c5a63e2edb598e658afe0e19f87 Mon Sep 17 00:00:00 2001
From: "Andrey M. Borodin" <x4mmm@172.25.72.30-ekb.dhcp.yndx.net>
Date: Mon, 6 Nov 2023 11:55:38 +0500
Subject: [PATCH] Implement benchmark_slru_page_readonly() to assess SLRU
perfromance
---
src/test/modules/test_slru/test_slru--1.0.sql | 2 ++
src/test/modules/test_slru/test_slru.c | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/src/test/modules/test_slru/test_slru--1.0.sql b/src/test/modules/test_slru/test_slru--1.0.sql
index 8635e7df01..3db6ef1029 100644
--- a/src/test/modules/test_slru/test_slru--1.0.sql
+++ b/src/test/modules/test_slru/test_slru--1.0.sql
@@ -11,6 +11,8 @@ CREATE OR REPLACE FUNCTION test_slru_page_read(int, bool DEFAULT true) RETURNS t
AS 'MODULE_PATHNAME', 'test_slru_page_read' LANGUAGE C;
CREATE OR REPLACE FUNCTION test_slru_page_readonly(int) RETURNS text
AS 'MODULE_PATHNAME', 'test_slru_page_readonly' LANGUAGE C;
+CREATE OR REPLACE FUNCTION benchmark_slru_page_readonly(int) RETURNS void
+ AS 'MODULE_PATHNAME', 'benchmark_slru_page_readonly' LANGUAGE C;
CREATE OR REPLACE FUNCTION test_slru_page_exists(int) RETURNS bool
AS 'MODULE_PATHNAME', 'test_slru_page_exists' LANGUAGE C;
CREATE OR REPLACE FUNCTION test_slru_page_delete(int) RETURNS VOID
diff --git a/src/test/modules/test_slru/test_slru.c b/src/test/modules/test_slru/test_slru.c
index ae21444c47..8a1e67a910 100644
--- a/src/test/modules/test_slru/test_slru.c
+++ b/src/test/modules/test_slru/test_slru.c
@@ -31,6 +31,7 @@ PG_FUNCTION_INFO_V1(test_slru_page_write);
PG_FUNCTION_INFO_V1(test_slru_page_writeall);
PG_FUNCTION_INFO_V1(test_slru_page_read);
PG_FUNCTION_INFO_V1(test_slru_page_readonly);
+PG_FUNCTION_INFO_V1(benchmark_slru_page_readonly);
PG_FUNCTION_INFO_V1(test_slru_page_exists);
PG_FUNCTION_INFO_V1(test_slru_page_sync);
PG_FUNCTION_INFO_V1(test_slru_page_delete);
@@ -128,6 +129,23 @@ test_slru_page_readonly(PG_FUNCTION_ARGS)
PG_RETURN_TEXT_P(cstring_to_text(data));
}
+Datum
+benchmark_slru_page_readonly(PG_FUNCTION_ARGS)
+{
+ int pageno = PG_GETARG_INT32(0);
+
+ for (int i = 0; i < 1000000000; i++)
+ {
+ SimpleLruReadPage_ReadOnly(TestSlruCtl,
+ pageno,
+ InvalidTransactionId);
+ Assert(LWLockHeldByMe(TestSLRULock));
+ LWLockRelease(TestSLRULock);
+ }
+
+ PG_RETURN_VOID();
+}
+
Datum
test_slru_page_exists(PG_FUNCTION_ARGS)
{
--
2.37.1 (Apple Git-137.1)