|
| 1 | +/* contrib/interconnect/interconnect--1.0.sql */ |
| 2 | + |
| 3 | +-- complain if script is sourced in psql, rather than via CREATE EXTENSION |
| 4 | +\echo Use "CREATE EXTENSION interconnect" to load this file. \quit |
| 5 | + |
| 6 | +CREATE FUNCTION __gp_interconnect_get_stats_f_on_master( |
| 7 | + OUT gp_segment_id smallint, |
| 8 | + OUT total_recv_queue_size bigint, |
| 9 | + OUT recv_queue_conting_time bigint, |
| 10 | + OUT total_capacity bigint, |
| 11 | + OUT capacity_counting_time bigint, |
| 12 | + OUT total_buffers bigint, |
| 13 | + OUT buffer_counting_time bigint, |
| 14 | + OUT retransmits bigint, |
| 15 | + OUT startup_cached_pkts bigint, |
| 16 | + OUT mismatches bigint, |
| 17 | + OUT crs_errors bigint, |
| 18 | + OUT snd_pkt_num bigint, |
| 19 | + OUT recv_pkt_num bigint, |
| 20 | + OUT disordered_pkt_num bigint, |
| 21 | + OUT duplicate_pkt_num bigint, |
| 22 | + OUT recv_ack_num bigint, |
| 23 | + OUT status_query_msg_num bigint |
| 24 | +) |
| 25 | +RETURNS SETOF record |
| 26 | +LANGUAGE C VOLATILE EXECUTE ON MASTER |
| 27 | +AS '$libdir/interconnect', 'gp_interconnect_get_stats'; |
| 28 | + |
| 29 | +CREATE FUNCTION __gp_interconnect_get_stats_f_on_segments( |
| 30 | + OUT gp_segment_id smallint, |
| 31 | + OUT total_recv_queue_size bigint, |
| 32 | + OUT recv_queue_conting_time bigint, |
| 33 | + OUT total_capacity bigint, |
| 34 | + OUT capacity_counting_time bigint, |
| 35 | + OUT total_buffers bigint, |
| 36 | + OUT buffer_counting_time bigint, |
| 37 | + OUT retransmits bigint, |
| 38 | + OUT startup_cached_pkts bigint, |
| 39 | + OUT mismatches bigint, |
| 40 | + OUT crs_errors bigint, |
| 41 | + OUT snd_pkt_num bigint, |
| 42 | + OUT recv_pkt_num bigint, |
| 43 | + OUT disordered_pkt_num bigint, |
| 44 | + OUT duplicate_pkt_num bigint, |
| 45 | + OUT recv_ack_num bigint, |
| 46 | + OUT status_query_msg_num bigint |
| 47 | +) |
| 48 | +RETURNS SETOF record LANGUAGE C VOLATILE EXECUTE ON ALL SEGMENTS |
| 49 | +AS '$libdir/interconnect', 'gp_interconnect_get_stats'; |
| 50 | + |
| 51 | + |
| 52 | +-- Cummulative interconnect statistics per segment |
| 53 | +CREATE VIEW gp_interconnect_stats_per_segment AS |
| 54 | + SELECT c.hostname, s.* FROM ( |
| 55 | + SELECT * FROM __gp_interconnect_get_stats_f_on_master() |
| 56 | + UNION ALL |
| 57 | + SELECT * FROM __gp_interconnect_get_stats_f_on_segments() |
| 58 | + ) s |
| 59 | + JOIN pg_catalog.gp_segment_configuration AS c |
| 60 | + ON s.gp_segment_id = c.content AND c.role = 'p'; |
| 61 | + |
| 62 | +GRANT SELECT ON gp_interconnect_stats_per_segment TO public; |
| 63 | + |
| 64 | +-- Cummulative interconnect statistics |
| 65 | +CREATE VIEW gp_interconnect_stats AS |
| 66 | + SELECT |
| 67 | + sum(total_recv_queue_size) as total_recv_queue_size |
| 68 | + , sum(recv_queue_conting_time) as recv_queue_conting_time |
| 69 | + , sum(total_capacity) as total_capacity |
| 70 | + , sum(capacity_counting_time) as capacity_counting_time |
| 71 | + , sum(total_buffers) as total_buffers |
| 72 | + , sum(buffer_counting_time) as buffer_counting_time |
| 73 | + , sum(retransmits) as retransmits |
| 74 | + , sum(startup_cached_pkts) as startup_cached_pkts |
| 75 | + , sum(mismatches) as mismatches |
| 76 | + , sum(crs_errors) as crs_errors |
| 77 | + , sum(snd_pkt_num) as snd_pkt_num |
| 78 | + , sum(recv_pkt_num) as recv_pkt_num |
| 79 | + , sum(disordered_pkt_num) as disordered_pkt_num |
| 80 | + , sum(duplicate_pkt_num) as duplicate_pkt_num |
| 81 | + , sum(recv_ack_num) as recv_ack_num |
| 82 | + , sum(status_query_msg_num) as status_query_msg_num |
| 83 | + FROM gp_interconnect_stats_per_segment; |
| 84 | + |
| 85 | +GRANT SELECT ON gp_interconnect_stats TO public; |
| 86 | + |
| 87 | +-- Cummulative interconnect statistics grouped by host |
| 88 | +CREATE VIEW gp_interconnect_stats_per_host AS |
| 89 | + SELECT |
| 90 | + hostname |
| 91 | + , sum(total_recv_queue_size) as total_recv_queue_size |
| 92 | + , sum(recv_queue_conting_time) as recv_queue_conting_time |
| 93 | + , sum(total_capacity) as total_capacity |
| 94 | + , sum(capacity_counting_time) as capacity_counting_time |
| 95 | + , sum(total_buffers) as total_buffers |
| 96 | + , sum(buffer_counting_time) as buffer_counting_time |
| 97 | + , sum(retransmits) as retransmits |
| 98 | + , sum(startup_cached_pkts) as startup_cached_pkts |
| 99 | + , sum(mismatches) as mismatches |
| 100 | + , sum(crs_errors) as crs_errors |
| 101 | + , sum(snd_pkt_num) as snd_pkt_num |
| 102 | + , sum(recv_pkt_num) as recv_pkt_num |
| 103 | + , sum(disordered_pkt_num) as disordered_pkt_num |
| 104 | + , sum(duplicate_pkt_num) as duplicate_pkt_num |
| 105 | + , sum(recv_ack_num) as recv_ack_num |
| 106 | + , sum(status_query_msg_num) as status_query_msg_num |
| 107 | + FROM gp_interconnect_stats_per_segment |
| 108 | + GROUP BY hostname; |
| 109 | + |
| 110 | +GRANT SELECT ON gp_interconnect_stats_per_host TO public; |
0 commit comments