Skip to content

Commit 61b429f

Browse files
PCP: PMDA: Introduce new PMDA for RDS
This commit adds a new PMDA (Performance Metrics Domain Agent) for Reliable Datagram Sockets (RDS). It exports key metrics including connection information, socket and connection statistics, and details of send, receive, and retransmit queues for performance analysis using Performance Co-Pilot (PCP). This PMDA is intended to aid in diagnosing network-related issues on systems using RDS over Infiniband or TCP. Signed-off-by: Mohith Kumar Thummaluru <[email protected]>
1 parent 26be7db commit 61b429f

File tree

14 files changed

+1618
-4
lines changed

14 files changed

+1618
-4
lines changed

build/rpm/pcp.spec.in

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1598,6 +1598,20 @@ This package contains the PCP Performance Metrics Domain Agent (PMDA) for
15981598
collecting statistics for nVidia RDMA over Converged Ethernet (RoCE) devices.
15991599
# end pcp-pmda-rocestat
16001600

1601+
#
1602+
# pcp-pmda-rds
1603+
#
1604+
%package pmda-rds
1605+
License: GPL-2.0-or-later
1606+
Summary: Performance Co-Pilot (PCP) metrics for RDS protocol
1607+
URL: https://pcp.io
1608+
Requires: pcp = @package_version@ pcp-libs = @package_version@
1609+
Requires: python3-pcp
1610+
%description pmda-rds
1611+
This package contains the PCP Performance Metrics Domain Agent (PMDA) for
1612+
collecting statistics for RDS connections
1613+
# end pcp-pmda-rds
1614+
16011615
#
16021616
# pcp-pmda-openvswitch
16031617
#
@@ -2268,6 +2282,7 @@ basic_manifest | keep '(etc/pcp|pmdas)/podman(/|$)' >pcp-pmda-podman-files
22682282
basic_manifest | keep '(etc/pcp|pmdas)/postfix(/|$)' >pcp-pmda-postfix-files
22692283
basic_manifest | keep '(etc/pcp|pmdas)/postgresql(/|$)' >pcp-pmda-postgresql-files
22702284
basic_manifest | keep '(etc/pcp|pmdas)/rabbitmq(/|$)' >pcp-pmda-rabbitmq-files
2285+
basic_manifest | keep '(etc/pcp|pmdas)/rds(/|$)' >pcp-pmda-rds-files
22712286
basic_manifest | keep '(etc/pcp|pmdas)/redis(/|$)' >pcp-pmda-redis-files
22722287
basic_manifest | keep '(etc/pcp|pmdas)/resctrl(/|$)|sys-fs-resctrl' >pcp-pmda-resctrl-files
22732288
basic_manifest | keep '(etc/pcp|pmdas)/rocestat(/|$)' >pcp-pmda-rocestat-files
@@ -2308,7 +2323,7 @@ for pmda_package in \
23082323
nutcracker nvidia \
23092324
openmetrics openvswitch oracle \
23102325
pdns perfevent podman postfix postgresql \
2311-
rabbitmq redis resctrl rocestat roomtemp rsyslog \
2326+
rabbitmq rds redis resctrl rocestat roomtemp rsyslog \
23122327
samba sendmail shping slurm smart snmp \
23132328
sockets statsd summary systemd \
23142329
unbound uwsgi \
@@ -2744,6 +2759,9 @@ done
27442759
%preun pmda-rocestat
27452760
%{pmda_remove "$1" "rocestat"}
27462761

2762+
%preun pmda-rds
2763+
%{pmda_remove "$1" "rds"}
2764+
27472765
%preun pmda-uwsgi
27482766
%{pmda_remove "$1" "uwsgi"}
27492767
%endif
@@ -3072,6 +3090,8 @@ fi
30723090

30733091
%files pmda-rocestat -f pcp-pmda-rocestat-files.rpm
30743092

3093+
%files pmda-rds -f pcp-pmda-rds-files.rpm
3094+
30753095
%files pmda-uwsgi -f pcp-pmda-uwsgi-files.rpm
30763096

30773097
%files export-pcp2graphite -f pcp-export-pcp2graphite-files.rpm

build/rpm/redhat.spec

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1759,6 +1759,21 @@ collecting statistics for nVidia RDMA over Converged Ethernet (RoCE) devices.
17591759
# end pcp-pmda-rocestat
17601760
%endif
17611761

1762+
#
1763+
# pcp-pmda-rds
1764+
#
1765+
%package pmda-rds
1766+
License: GPL-2.0-or-later
1767+
Summary: Performance Co-Pilot (PCP) metrics for RDS protocol
1768+
URL: https://pcp.io
1769+
Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
1770+
Requires: python3-pcp
1771+
%description pmda-rds
1772+
This package contains the PCP Performance Metrics Domain Agent (PMDA) for
1773+
collecting statistics for RDS connections.
1774+
# end pcp-pmda-rds
1775+
%endif
1776+
17621777
%if !%{disable_mongodb}
17631778
#
17641779
# pcp-pmda-mongodb
@@ -2478,6 +2493,7 @@ basic_manifest | keep '(etc/pcp|pmdas)/podman(/|$)' >pcp-pmda-podman-files
24782493
basic_manifest | keep '(etc/pcp|pmdas)/postfix(/|$)' >pcp-pmda-postfix-files
24792494
basic_manifest | keep '(etc/pcp|pmdas)/postgresql(/|$)' >pcp-pmda-postgresql-files
24802495
basic_manifest | keep '(etc/pcp|pmdas)/rabbitmq(/|$)' >pcp-pmda-rabbitmq-files
2496+
basic_manifest | keep '(etc/pcp|pmdas)/rds(/|$)' >pcp-pmda-rds-files
24812497
basic_manifest | keep '(etc/pcp|pmdas)/redis(/|$)' >pcp-pmda-redis-files
24822498
basic_manifest | keep '(etc/pcp|pmdas)/resctrl(/|$)|sys-fs-resctrl' >pcp-pmda-resctrl-files
24832499
basic_manifest | keep '(etc/pcp|pmdas)/rocestat(/|$)' >pcp-pmda-rocestat-files
@@ -2519,7 +2535,7 @@ for pmda_package in \
25192535
nutcracker nvidia \
25202536
openmetrics openvswitch oracle \
25212537
pdns perfevent podman postfix postgresql \
2522-
rabbitmq redis resctrl rocestat roomtemp rpm rsyslog \
2538+
rabbitmq rds redis resctrl rocestat roomtemp rpm rsyslog \
25232539
samba sendmail shping slurm smart snmp \
25242540
sockets statsd summary systemd \
25252541
unbound uwsgi \
@@ -2913,6 +2929,9 @@ exit 0
29132929
%preun pmda-rocestat
29142930
%{pmda_remove "$1" "rocestat"}
29152931

2932+
%preun pmda-rds
2933+
%{pmda_remove "$1" "rds"}
2934+
29162935
%endif
29172936

29182937
%preun pmda-apache
@@ -3263,6 +3282,8 @@ fi
32633282

32643283
%files pmda-rocestat -f pcp-pmda-rocestat-files.rpm
32653284

3285+
%files pmda-rds -f pcp-pmda-rds-files.rpm
3286+
32663287
%files pmda-uwsgi -f pcp-pmda-uwsgi-files.rpm
32673288

32683289
%files export-pcp2graphite -f pcp-export-pcp2graphite-files.rpm

src/pmdas/GNUmakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ PLPMDAS = bonding netfilter zimbra postgresql \
3939
PYPMDAS = bcc gluster zswap unbound mic haproxy \
4040
json libvirt lio openmetrics elasticsearch \
4141
bpftrace mssql netcheck rabbitmq openvswitch \
42-
nfsclient mongodb uwsgi rocestat hdb
42+
nfsclient mongodb uwsgi rocestat hdb rds
4343

4444
SUBDIRS = $(CPMDAS) $(PLPMDAS) $(PYPMDAS)
4545
LDIRT = pmcd.conf

src/pmdas/rds/GNUmakefile

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#
2+
# Copyright (c) 2025 Oracle and/or its affiliates.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This program is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License as published by the
7+
# Free Software Foundation; either version 2 of the License, or (at your
8+
# option) any later version.
9+
#
10+
# This program is distributed in the hope that it will be useful, but
11+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12+
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13+
# for more details.
14+
#
15+
16+
TOPDIR = ../../..
17+
include $(TOPDIR)/src/include/builddefs
18+
19+
IAM = rds
20+
PYSCRIPT = pmda$(IAM).python
21+
LDIRT = domain.h root pmns $(IAM).log
22+
DOMAIN = GLUSTER
23+
24+
PMDAADMDIR = $(PCP_PMDASADM_DIR)/$(IAM)
25+
PMDATMPDIR = $(PCP_PMDAS_DIR)/$(IAM)
26+
27+
MAN_SECTION = 1
28+
MAN_PAGES = pmda$(IAM).$(MAN_SECTION)
29+
MAN_DEST = $(PCP_MAN_DIR)/man$(MAN_SECTION)
30+
31+
default_pcp default: build-me
32+
33+
include $(BUILDRULES)
34+
35+
ifeq "$(HAVE_PYTHON)" "true"
36+
build-me: check_domain
37+
install_pcp install: default
38+
$(INSTALL) -m 755 -d $(PMDAADMDIR)
39+
$(INSTALL) -m 755 -d $(PMDATMPDIR)
40+
$(INSTALL) -m 755 -t $(PMDATMPDIR) Install Remove $(PYSCRIPT) $(PMDAADMDIR)
41+
@$(INSTALL_MAN)
42+
else
43+
build-me:
44+
install_pcp install:
45+
@$(INSTALL_MAN)
46+
endif
47+
48+
check_domain: ../../pmns/stdpmid
49+
$(DOMAIN_PYTHONRULE)
50+
51+
check:: $(MAN_PAGES)
52+
$(MANLINT) $^

src/pmdas/rds/Install

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#
2+
# Copyright (c) 2025 Oracle and/or its affiliates.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This program is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License as published by the
7+
# Free Software Foundation; either version 2 of the License, or (at your
8+
# option) any later version.
9+
#
10+
# This program is distributed in the hope that it will be useful, but
11+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12+
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13+
# for more details.
14+
#
15+
16+
. $PCP_DIR/etc/pcp.env
17+
. $PCP_SHARE_DIR/lib/pmdaproc.sh
18+
19+
iam=rds
20+
python_opt=true
21+
daemon_opt=false
22+
23+
# Prepare PMDA Python files (needed for easier packaging)
24+
$PCP_PYTHON_PROG $PCP_PMDAS_DIR/rds/pyprep
25+
26+
#
27+
# See pmcd(1) man page. PMDA starts up in the "not ready" state.
28+
# When it has finished starting up, it sends a PM_ERR_PMDAREADY
29+
# error PDU to PMCD to indicate it's ready to start processing
30+
# requests.
31+
32+
ipc_prot="binary notready"
33+
pmdaSetup
34+
pmdaInstall
35+
exit

src/pmdas/rds/Remove

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#
2+
# Copyright (c) 2025 Oracle and/or its affiliates.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This program is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License as published by the
7+
# Free Software Foundation; either version 2 of the License, or (at your
8+
# option) any later version.
9+
#
10+
# This program is distributed in the hope that it will be useful, but
11+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12+
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13+
# for more details.
14+
#
15+
# Remove the rds PMDA
16+
#
17+
18+
# source the PCP configuration environment variables
19+
. $PCP_DIR/etc/pcp.env
20+
21+
# Get the common procedures and variable assignments
22+
#
23+
. $PCP_SHARE_DIR/lib/pmdaproc.sh
24+
25+
# The name of the PMDA
26+
#
27+
iam=rds
28+
29+
# Do it
30+
#
31+
pmdaSetup
32+
pmdaRemove
33+
34+
35+
exit

src/pmdas/rds/domain.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#define RDS 256

0 commit comments

Comments
 (0)