Created
October 1, 2012 16:52
-
-
Save ralphbean/3812984 to your computer and use it in GitHub Desktop.
Script to generate an educated guess at the bandwidth/load requirements for fedmsg.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| """ Script to do some math to make an educated guess at | |
| bandwith requirements of fedmsg for Fedora Infrastructure. | |
| :: | |
| --- ~/scratch » python message-size.py | |
| kbps: 6.49658203125 | |
| mbps: 0.00634431838989 | |
| """ | |
| import sys | |
| # In order to get the typical message size, I've captured a | |
| # message from the busthat we'll arbitrarilly ordain as the | |
| # average message. | |
| a_bodhi_message = "{u'certificate': u'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVVENDQTdxZ0F3SUJBZ0lCSERBTkJna3Fo\na2lHOXcwQkFRVUZBRENCb0RFTE1Ba0dBMVVFQmhNQ1ZWTXgKQ3pBSkJnTlZCQWdUQWs1RE1SQXdE\nZ1lEVlFRSEV3ZFNZV3hsYVdkb01SY3dGUVlEVlFRS0V3NUdaV1J2Y21FZwpVSEp2YW1WamRERVBN\nQTBHQTFVRUN4TUdabVZrYlhObk1ROHdEUVlEVlFRREV3Wm1aV1J0YzJjeER6QU5CZ05WCkJDa1RC\nbVpsWkcxelp6RW1NQ1FHQ1NxR1NJYjNEUUVKQVJZWFlXUnRhVzVBWm1Wa2IzSmhjSEp2YW1WamRD\nNXYKY21jd0hoY05NVEl3TnpFMU1qSXdNRFE0V2hjTk1qSXdOekV6TWpJd01EUTRXakNCNERFTE1B\na0dBMVVFQmhNQwpWVk14Q3pBSkJnTlZCQWdUQWs1RE1SQXdEZ1lEVlFRSEV3ZFNZV3hsYVdkb01S\nY3dGUVlEVlFRS0V3NUdaV1J2CmNtRWdVSEp2YW1WamRERVBNQTBHQTFVRUN4TUdabVZrYlhObk1T\nOHdMUVlEVlFRREV5WmliMlJvYVMxaGNIQXcKTWk1emRHY3VjR2g0TWk1bVpXUnZjbUZ3Y205cVpX\nTjBMbTl5WnpFdk1DMEdBMVVFS1JNbVltOWthR2t0WVhCdwpNREl1YzNSbkxuQm9lREl1Wm1Wa2Iz\nSmhjSEp2YW1WamRDNXZjbWN4SmpBa0Jna3Foa2lHOXcwQkNRRVdGMkZrCmJXbHVRR1psWkc5eVlY\nQnliMnBsWTNRdWIzSm5NSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKZ1FEakF3\nVGU4YzB6T2wzdXY5VUU0U3hKbEE1RzRFc3pQejFybzZzcmRWZlZ4cFMvMFg4VXdZYWpIZWsxRGt4\nRQpDb0FPK3Raa3Q2VEo5MnovR0JHSHV6ZGZaOEFabGdIZGhTZzhkbHRDU1JRK0l4TEV1b1BPdXBv\nMUl4R0c2VnJFCld4a1g4VFNyVXBOQmRmaWJjc2phYW1JMFJYRjkwWVgxVnE0MU5Cd1p5TFVueFFJ\nREFRQUJvNElCVnpDQ0FWTXcKQ1FZRFZSMFRCQUl3QURBdEJnbGdoa2dCaHZoQ0FRMEVJQlllUldG\nemVTMVNVMEVnUjJWdVpYSmhkR1ZrSUVObApjblJwWm1sallYUmxNQjBHQTFVZERnUVdCQlJCMW83\nU3MvTkkzSkdqRTFQN0VVY0JLalFtMmpDQjFRWURWUjBqCkJJSE5NSUhLZ0JSclFGcjVFZ2lKV2Vk\nWjVRWDFBaDBLVG44VUFLR0JwcVNCb3pDQm9ERUxNQWtHQTFVRUJoTUMKVlZNeEN6QUpCZ05WQkFn\nVEFrNURNUkF3RGdZRFZRUUhFd2RTWVd4bGFXZG9NUmN3RlFZRFZRUUtFdzVHWldSdgpjbUVnVUhK\ndmFtVmpkREVQTUEwR0ExVUVDeE1HWm1Wa2JYTm5NUTh3RFFZRFZRUURFd1ptWldSdGMyY3hEekFO\nCkJnTlZCQ2tUQm1abFpHMXpaekVtTUNRR0NTcUdTSWIzRFFFSkFSWVhZV1J0YVc1QVptVmtiM0po\nY0hKdmFtVmoKZEM1dmNtZUNDUURqVUI1SFR4Y2VSVEFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNE\nQWpBTEJnTlZIUThFQkFNQwpCNEF3RFFZSktvWklodmNOQVFFRkJRQURnWUVBR04wNmJ3RGg4UE8w\ndEJpRHJhUmtyUks4ZitIQ2NKZ0RWbnBDCkZYUE5kWDdvcXJkS2h5NzRPdGVsL1BZYzBrWWZkZlZH\nNGR4VnBDK0pZMUR5Z3ZwcWVXZGt5cjFwZGdyUzdSSVIKZVhnbXJrYWF1ZkhHdDVBckRxUzJ5VmRX\nM0tBWEZBWWcyaSsvajZHVkc5SjdlQ1h6U29uUkQ1NUlnM2drWnFLKwprMlNYMEFRPQotLS0tLUVO\nRCBDRVJUSUZJQ0FURS0tLS0tCg==\n', u'i': 1, u'timestamp': 1349109682.103498, u'topic': u'org.fedoraproject.stg.bodhi.update.comment', u'signature': u'30XkM8GGWTADbtEAspdlq9C8PDLgtXdnEZ06w0OAYDWg4DXbtVjP8dzmgi9pDl//HkDaMBR4jBSp\ng2IQktGKw5gBjwR/s1JIB9OKMsvn2ynh0NekZcEt1vM8o6vSiYuPD2xiAcSdSeJXx8Nt+ZgrjppC\n8rCcGZY/OuDKwMPhSPY=\n', u'msg': {u'comment': {u'group': None, u'author': u'ralph', u'text': u'Testing more for fedmsg.', u'karma': 1, u'anonymous': False, u'timestamp': 1349109680.0, u'update_title': u'xmonad-0.10-10.fc17'}}}" | |
| average_size = sys.getsizeof(a_bodhi_message) * 2 | |
| # N is the number of senders and is not used | |
| N = 1 | |
| # M is the number of receivers. | |
| # In production we have three receivers up. | |
| # - a fedmsg-hub running on busgateway01 | |
| # - a fedmsg-gateway running on busgateway01 | |
| # - a fedmsg-irc running on value03 | |
| # | |
| # At any given time, if someone is running fedmsg-tail, that adds | |
| # another receiver to the mix making the count 4. | |
| # | |
| # Assume in the future we'll distribute the fedmsg-hub across some set of | |
| # nodes. Those fedmsg-hub worker instances would be fed by a round-robin | |
| # dealer (that I haven't implemented yet). So let's add an extra receiver | |
| # for that dealer. | |
| M = 5 | |
| # Just from glancing at the bus this morning, it seemed like we were getting one | |
| # message every 20 seconds during a high point. | |
| # We'll multiply that by 5 just to take into account new high-volume services | |
| # that haven't been integrated yet like koji and bugzilla. We don't know, but I | |
| # *suspect* they'll be high-volume. | |
| messages_per_second = 1.0/20 * 5 | |
| bits_per_second = average_size * messages_per_second * M | |
| kbps = bits_per_second / 1024.0 | |
| mbps = kbps / 1024.0 | |
| print "kbps:", kbps # kbps: 6.49658203125 | |
| print "mbps:", mbps # mbps: 0.00634431838989 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment