mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-17 02:12:56 +00:00
usage instructions for generator script
This commit is contained in:
@@ -1,20 +1,19 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
import queue
|
||||
import shutil
|
||||
import subprocess
|
||||
import threading
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
|
||||
from fixtures.neon_fixtures import (
|
||||
NeonEnv,
|
||||
NeonEnvBuilder,
|
||||
PgBin,
|
||||
last_flush_lsn_upload,
|
||||
)
|
||||
from fixtures.types import TenantId
|
||||
from fixtures.remote_storage import LocalFsStorage, RemoteStorageKind
|
||||
from fixtures.log_helper import log
|
||||
from fixtures.pageserver.utils import wait_until_tenant_active
|
||||
from fixtures.remote_storage import LocalFsStorage, RemoteStorageKind
|
||||
from fixtures.types import TenantId
|
||||
|
||||
|
||||
def duplicate_tenant(
|
||||
@@ -59,6 +58,24 @@ def test_pageserver_startup_many_tenants(neon_env_builder: NeonEnvBuilder, pg_bi
|
||||
|
||||
TEST_OUTPUT=/mnt/many_tenants NEON_BIN=$PWD/target/release DEFAULT_PG_VERSION=15 ./scripts/pytest --preserve-database-files --timeout=0 ./test_runner/performance/test_pageserver_startup_many_tenants.py
|
||||
|
||||
Then
|
||||
|
||||
export NEON_REPO_DIR=/mnt/many_tenants/test_pageserver_startup_many_tenants/repo
|
||||
|
||||
# edit $NEON_REPO_DIR/pageserver_1/pageserver.toml to use metric collection,
|
||||
# with intervals from prod:
|
||||
#
|
||||
# metric_collection_endpoint = "https://127.0.0.1:6666"
|
||||
# metric_collection_interval: 10min
|
||||
# cached_metric_collection_interval: 0s
|
||||
|
||||
# run a fake metric collection endpoint in some other terminal using
|
||||
# python3 -m http.server 6666
|
||||
|
||||
# then start pageserver
|
||||
./target/release/neon_local start
|
||||
|
||||
|
||||
|
||||
"""
|
||||
neon_env_builder.enable_pageserver_remote_storage(RemoteStorageKind.LOCAL_FS)
|
||||
@@ -71,7 +88,6 @@ def test_pageserver_startup_many_tenants(neon_env_builder: NeonEnvBuilder, pg_bi
|
||||
# cleanup initial tenant
|
||||
env.pageserver.tenant_detach(env.initial_tenant)
|
||||
|
||||
|
||||
# create our template tenant
|
||||
tenant_config_mgmt_api = {
|
||||
"gc_period": "0s",
|
||||
@@ -89,7 +105,7 @@ def test_pageserver_startup_many_tenants(neon_env_builder: NeonEnvBuilder, pg_bi
|
||||
template_tenant, template_timeline = env.neon_cli.create_tenant(conf=tenant_config_cli)
|
||||
ep = env.endpoints.create_start("main", tenant_id=template_tenant)
|
||||
ep.safe_psql("create table foo(b text)")
|
||||
for i in range(0, 8):
|
||||
for _i in range(0, 8):
|
||||
ep.safe_psql("insert into foo(b) values ('some text')")
|
||||
last_flush_lsn_upload(env, ep, template_tenant, template_timeline)
|
||||
ep.stop_and_destroy()
|
||||
@@ -117,9 +133,20 @@ def test_pageserver_startup_many_tenants(neon_env_builder: NeonEnvBuilder, pg_bi
|
||||
for w in workers:
|
||||
w.join()
|
||||
|
||||
# for evaluation, use the same background loop periods as in prod
|
||||
benchmark_tenant_config = {k: v for k, v in tenant_config_mgmt_api.items()}
|
||||
del benchmark_tenant_config["compaction_period"]
|
||||
del benchmark_tenant_config["gc_period"]
|
||||
benchmark_tenant_config["eviction_policy"] = {
|
||||
"kind": "LayerAccessThreshold",
|
||||
"period": "10m",
|
||||
# don't do evictions
|
||||
"threshold": "1000d",
|
||||
}
|
||||
|
||||
assert ps_http.tenant_list() == []
|
||||
for tenant in new_tenants:
|
||||
env.pageserver.tenant_attach(tenant, config=tenant_config_mgmt_api)
|
||||
env.pageserver.tenant_attach(tenant, config=benchmark_tenant_config)
|
||||
for tenant in new_tenants:
|
||||
wait_until_tenant_active(ps_http, tenant)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user