)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f96de9bd37cd1388d5d6ec66670fad499153e41b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Using libvirt to get the used memory value for a KVM intance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Id94d3fb79d8ef764d4a8bb4cf0eaa80b0faec92e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da9df570_1fa4dca4","line":9,"updated":"2014-09-25 01:25:11.000000000","message":"I think a bug report should be added, see Welcome message","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"}],"ceilometer/compute/virt/libvirt/inspector.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f96de9bd37cd1388d5d6ec66670fad499153e41b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"INSTANCE_INFO \u003d \u0027_info\u0027"},{"line_number":46,"context_line":"INSTANCE_NAME \u003d \u0027OS-EXT-SRV-ATTR:instance_name\u0027"},{"line_number":47,"context_line":"RSS_MEMORY \u003d \u0027rss\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def retry_on_disconnect(function):"},{"line_number":50,"context_line":"    def decorator(self, *args, **kwargs):"},{"line_number":51,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_bfa590b6","line":48,"updated":"2014-09-25 01:25:11.000000000","message":"-1: need an additional blank line after L48","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f96de9bd37cd1388d5d6ec66670fad499153e41b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        dom_info \u003d domain.info()"},{"line_number":126,"context_line":"        return virt_inspector.CPUStats(number\u003ddom_info[3], time\u003ddom_info[4])"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def inspect_memory_usage(self, instance, duration\u003dNone):"},{"line_number":130,"context_line":"        instanceName \u003d instance.__dict__[INSTANCE_INFO][INSTANCE_NAME]"},{"line_number":131,"context_line":"        domain \u003d self._lookup_by_name(instanceName)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_9fd44c21","line":128,"updated":"2014-09-25 01:25:11.000000000","message":"-1: rm L128","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f96de9bd37cd1388d5d6ec66670fad499153e41b","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def inspect_memory_usage(self, instance, duration\u003dNone):"},{"line_number":130,"context_line":"        instanceName \u003d instance.__dict__[INSTANCE_INFO][INSTANCE_NAME]"},{"line_number":131,"context_line":"        domain \u003d self._lookup_by_name(instanceName)"},{"line_number":132,"context_line":"        memory \u003d domain.memoryStats()[RSS_MEMORY] / units.Ki"},{"line_number":133,"context_line":"        return virt_inspector.MemoryUsageStats(usage\u003dmemory)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_1fcf7c80","line":130,"updated":"2014-09-25 01:25:11.000000000","message":"recommend: s/instanceName/instance_name/\n\n-1: use ceilometer.compute.pollster.util.instance_name helper function instead","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"58f74583f4638bfae1a7f738c985e6cc23edd990","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def inspect_memory_usage(self, instance, duration\u003dNone):"},{"line_number":130,"context_line":"        instanceName \u003d instance.__dict__[INSTANCE_INFO][INSTANCE_NAME]"},{"line_number":131,"context_line":"        domain \u003d self._lookup_by_name(instanceName)"},{"line_number":132,"context_line":"        memory \u003d domain.memoryStats()[RSS_MEMORY] / units.Ki"},{"line_number":133,"context_line":"        return virt_inspector.MemoryUsageStats(usage\u003dmemory)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_4be17e99","line":130,"in_reply_to":"da9df570_1fcf7c80","updated":"2014-12-09 14:59:16.000000000","message":"it\u0027s not indisputtable, but may be using getattr will be more correct and tolerant to AttributeError. \nFor example getattr(instance, INSTANCE_INFO, {}).get(INSTANCE_NAME)","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"0ba8d4a90f10582019e920159acc8dd7a1fe5451","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def inspect_memory_usage(self, instance, duration\u003dNone):"},{"line_number":130,"context_line":"        instanceName \u003d instance.__dict__[INSTANCE_INFO][INSTANCE_NAME]"},{"line_number":131,"context_line":"        domain \u003d self._lookup_by_name(instanceName)"},{"line_number":132,"context_line":"        memory \u003d domain.memoryStats()[RSS_MEMORY] / units.Ki"},{"line_number":133,"context_line":"        return virt_inspector.MemoryUsageStats(usage\u003dmemory)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def inspect_vnics(self, instance_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_df36d451","line":132,"updated":"2014-09-25 01:30:42.000000000","message":"libvirt API for rss memory has a problem, which is a big deal FMPOV, that it doesn\u0027t represent the memory used by the instance, but the qemu process, especially when instance is a windows vm (or a nova option is open to preserve all memory), the result will be all located memory plus additional data structure, since this data will be used to bill, user will cost more than he really used.","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"},{"author":{"_account_id":13386,"name":"Vivek Nandavanam","email":"vivek.nandavanam@vmturbo.com","username":"vivek.nandavanam"},"change_message_id":"ab18a3e8310de93825fe0d39c0037490be7c2187","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def inspect_memory_usage(self, instance, duration\u003dNone):"},{"line_number":130,"context_line":"        instanceName \u003d instance.__dict__[INSTANCE_INFO][INSTANCE_NAME]"},{"line_number":131,"context_line":"        domain \u003d self._lookup_by_name(instanceName)"},{"line_number":132,"context_line":"        memory \u003d domain.memoryStats()[RSS_MEMORY] / units.Ki"},{"line_number":133,"context_line":"        return virt_inspector.MemoryUsageStats(usage\u003dmemory)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def inspect_vnics(self, instance_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_4281898e","line":132,"in_reply_to":"da9df570_df36d451","updated":"2014-09-29 21:34:55.000000000","message":"I understand your concern from a billing standpoint and it would be a good number to have.\n\nThe memory including the overhead is also an important metric from a memory management perspective since this is the actual memory consumed by the qemu process.\nShould we add this as an additional metric like \u0027memory.rss\u0027 instead of \u0027memory.used\u0027","commit_id":"3ebc8e3ee8e7733f111e6d1ed5c089786a5792e9"}]}
