PageSourceSearch

https://colby.id.au/assets/js/81abf4e8.acd9e631.js

js colby.id.au collected 2026-10-05 07:08:59 UTC 8,067 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkpc_thoughts=self.webpackChunkpc_thoughts||[]).push([[730],{28453:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var n=i(96540);const s={},p=n.createContext(s);function a(e){const t=n.useContext(p);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(p.Provider,{value:t},e.children)}},36241:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>n,toc:()=>r});var n=i(59166),s=i(74848),p=i(28453);const a={authors:"paul",date:"2014-03-09T11:39",image:"assets/pcp-pmda-cpp.png",slug:"pcp-qpid-pmda",tags:["c++","pcp","pmda","qpid"],title:"PCP, Qpid, and PMDA++"},o=void 0,c={authorsImageUrls:[void 0]},r=[{value:"PMDA++",id:"pmda",level:2},{value:"Qpid PMDA",id:"qpid-pmda",level:2},{value:"Project Pages",id:"project-pages",level:2}];function l(e){const t={a:"a",blockquote:"blockquote",h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,p.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{class:"blog-post-image",children:(0,s.jsx)(t.img,{alt:"PMDA++ logo",src:i(59085).A+"",width:"150",height:"150"})}),"\n",(0,s.jsxs)(t.p,{children:["I've recently been working with ",(0,s.jsx)(t.a,{href:"http://oss.sgi.com/projects/pcp/",children:"Performance Co-Pilot (PCP)"})," - specifically, creating\nsome PCP add-ons (known as PMDAs) for exposing custom application metrics to PCP."]}),"\n",(0,s.jsx)(t.p,{children:"While doing so, it became pretty clear to me, that although PCP's PMDA C API is very efficient, a good quality C++\nwrapper could significantly cut PMDA development and maintenance time (for people like me, at least), while also\nincreasing runtime safety by building-in all of the checks and balances that most PMDAs (should) perform, in a generic\nreusable manner."}),"\n",(0,s.jsx)(t.p,{children:"This sounded like a bit of fun, and suited my present hunger for some more advanced C++ API design work, so went about\nimplementing such a library."}),"\n",(0,s.jsx)(t.h2,{id:"pmda",children:"PMDA++"}),"\n",(0,s.jsxs)(t.p,{children:["To quote from the ",(0,s.jsx)(t.a,{href:"https://github.com/pcolby/pcp-pmda-cpp",children:"PMDA++ project page"}),":"]}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsx)(t.p,{children:"PMDA++ is a header-only library that allows developers to write PMDAs in C++. It is a light C++ wrapper around PCP's\nC APIs."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"That sums it up quite well."}),"\n",(0,s.jsxs)(t.p,{children:["If you're interesed, you can read more about the project, including basic code examples etc, on the\n",(0,s.jsx)(t.a,{href:"https://github.com/pcolby/pcp-pmda-cpp",children:"PMDA++ project page"}),", available on GitHub."]}),"\n",(0,s.jsx)(t.h2,{id:"qpid-pmda",children:"Qpid PMDA"}),"\n",(0,s.jsxs)(t.p,{children:["Additionally, I've ",(0,s.jsx)(t.a,{href:"https://github.com/pcolby/pcp-pmda-qpid",children:"made available"})," a basic PMDA for\n",(0,s.jsx)(t.a,{href:"http://qpid.apache.org/",children:"Apache Qpid"})," message brokers using the above PMDA++ library."]}),"\n",(0,s.jsx)(t.p,{children:"This PMDA subscribes to metrics data generated by Qpid messaging brokers, and exports them to the PCP monitoring system."}),"\n",(0,s.jsx)(t.h2,{id:"project-pages",children:"Project Pages"}),"\n",(0,s.jsxs)(t.p,{children:["The above projects can be found on ",(0,s.jsx)(t.a,{href:"https://github.com/",children:"GitHub"})," at the following locations:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["PMDA++ - ",(0,s.jsx)(t.a,{href:"https://github.com/pcolby/pcp-pmda-cpp",children:"https://github.com/pcolby/pcp-pmda-cpp"})]}),"\n",(0,s.jsxs)(t.li,{children:["Qpid PMDA - ",(0,s.jsx)(t.a,{href:"https://github.com/pcolby/pcp-pmda-qpid",children:"https://github.com/pcolby/pcp-pmda-qpid"})]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Feel free to have to browse the code, suggest improvements, report issues, clone / fork, create pull requests, whatever\nyou like."})]})}function d(e={}){const{wrapper:t}={...(0,p.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},59085:(e,t,i)=>{i.d(t,{A:()=>n});const n="data:image/png;base64,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"},59166:e=>{e.exports=JSON.parse('{"permalink":"/pcp-qpid-pmda","source":"@site/blog/2014-03-09-pcp-qpid-pmda.md","title":"PCP, Qpid, and PMDA++","description":"PMDA++ logo","date":"2014-03-09T11:39:00.000Z","tags":[{"inline":true,"label":"c++","permalink":"/tags/c"},{"inline":true,"label":"pcp","permalink":"/tags/pcp"},{"inline":true,"label":"pmda","permalink":"/tags/pmda"},{"inline":true,"label":"qpid","permalink":"/tags/qpid"}],"readingTime":1.56,"hasTruncateMarker":true,"authors":[{"name":"Paul Colby","url":"https://github.com/pcolby","socials":{"github":"https://github.com/pcolby","linkedin":"https://www.linkedin.com/in/paulcolby1/","Qt":"https://forum.qt.io/user/paul-colby","x":"https://x.com/twitStirrer"},"imageURL":"https://github.com/pcolby.png","key":"paul","page":null}],"frontMatter":{"authors":"paul","date":"2014-03-09T11:39","image":"assets/pcp-pmda-cpp.png","slug":"pcp-qpid-pmda","tags":["c++","pcp","pmda","qpid"],"title":"PCP, Qpid, and PMDA++"},"unlisted":false,"prevItem":{"title":"Blography","permalink":"/blography"},"nextItem":{"title":"Benchmarking Amazon\'s SQS","permalink":"/benchmarking-sqs"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.