)]}'
{"specs/volume-perf-and-health.rst":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"b01662132c4b8d238c1f161a580e941c72d5e439","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Viewing 3rd party storage provider volume performance in the horizon client to"},{"line_number":22,"context_line":"developers and end users"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Proposed change"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_c63cd931","line":22,"updated":"2015-04-30 03:25:28.000000000","message":"Using the history of performance metrics is useful in determining what happened when, e.g. decreased performance at time X when Y was updated.  Is this just to collect performance at a point in time, and not saving the history of it?","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"801b25dab4bcf9d8ad1e69fb7a70c5a0847b4852","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Viewing 3rd party storage provider volume performance in the horizon client to"},{"line_number":22,"context_line":"developers and end users"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Proposed change"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_3e21f09f","line":22,"in_reply_to":"3acd31a7_c63cd931","updated":"2015-05-08 11:49:23.000000000","message":"+1","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5608fec27479e9d383ccdfbd8254d28d9712561e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Viewing 3rd party storage provider volume performance in the horizon client to"},{"line_number":22,"context_line":"developers and end users"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Proposed change"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_3f6ee4c9","line":22,"in_reply_to":"3acd31a7_c63cd931","updated":"2015-04-30 11:18:47.000000000","message":"+1","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"801b25dab4bcf9d8ad1e69fb7a70c5a0847b4852","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Extend the current cinder-volume driver interface and cinder volume manager"},{"line_number":28,"context_line":"to support per-volume performance collection, per-volume health status, and"},{"line_number":29,"context_line":"driver instance health status (per array health). "},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The initial volume performance metrics will be as follows:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1aca2d91_94beb4d2","line":28,"updated":"2015-05-08 11:49:23.000000000","message":"Is it common backends that supports this volume level of granularity? Examples?? It looks to me that this would be very overloading for storages to collect that amount of information.","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5608fec27479e9d383ccdfbd8254d28d9712561e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Extend the current cinder-volume driver interface and cinder volume manager"},{"line_number":28,"context_line":"to support per-volume performance collection, per-volume health status, and"},{"line_number":29,"context_line":"driver instance health status (per array health). "},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The initial volume performance metrics will be as follows:"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_bf4b1459","line":29,"updated":"2015-04-30 11:18:47.000000000","message":"nit: remove trailing whitespace.   There are other places below as well which show up as red.","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"b01662132c4b8d238c1f161a580e941c72d5e439","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* Array Health SubStatus -array_substatus"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"If the cinder volume driver supports the .perf_collection. feature the cinder"},{"line_number":50,"context_line":"volume manager would define and add new periodic stats"},{"line_number":51,"context_line":"* Using the .@periodic_task decorator, every 15 seconds call a new cinder"},{"line_number":52,"context_line":"volume driver interface get_volume_performance_stats()"},{"line_number":53,"context_line":"* Using the .@periodic_task decorator, every 60 seconds call a new cinder"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_c6ce195a","line":50,"updated":"2015-04-30 03:25:28.000000000","message":"Where are these stats stored, in cinder db?  How long will they be stored?  Are you planning to gather a history of performance metrics?  What about a round-robin database to store it.","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0b6b5fa6c95dc711359734758aba2db9f3e1ba01","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* Array Health SubStatus -array_substatus"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"If the cinder volume driver supports the .perf_collection. feature the cinder"},{"line_number":50,"context_line":"volume manager would define and add new periodic stats"},{"line_number":51,"context_line":"* Using the .@periodic_task decorator, every 15 seconds call a new cinder"},{"line_number":52,"context_line":"volume driver interface get_volume_performance_stats()"},{"line_number":53,"context_line":"* Using the .@periodic_task decorator, every 60 seconds call a new cinder"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9af37de9_98d519bb","line":50,"in_reply_to":"3acd31a7_c6ce195a","updated":"2015-05-10 11:26:42.000000000","message":"Definitely not the cinder db, there are already time-and-value stores in openstack, and if you care about volume metrics you almost certainly care about other metrics and have therefore se toone of them up. Just send metrics notifications.","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1853e391d0cfefa29e8d505652811823d9ebc2b8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* The existing get_volume_stats() call would have two new attributes added"},{"line_number":56,"context_line":"to its expected response object:"},{"line_number":57,"context_line":"o\t.array_status."},{"line_number":58,"context_line":"o\t.array_substatus"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_7437fde3","line":58,"updated":"2015-04-29 18:20:57.000000000","message":"Reporting volume performance for every volume evers 15 seconds could be a massive load on a backend. Why not collect it only on demand?","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"801b25dab4bcf9d8ad1e69fb7a70c5a0847b4852","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* The existing get_volume_stats() call would have two new attributes added"},{"line_number":56,"context_line":"to its expected response object:"},{"line_number":57,"context_line":"o\t.array_status."},{"line_number":58,"context_line":"o\t.array_substatus"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_9ed7e4ec","line":58,"in_reply_to":"3acd31a7_7437fde3","updated":"2015-05-08 11:49:23.000000000","message":"If we plan to have a history with the volume/array status, this need to be done periodically. That could be configured to avoid overload e.g:\n[bend1]\n...\nvol_stats_refresh_rate \u003d \narray_stats_refresh_rate \u003d","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"cedfb5cdf2c57e8d7c84461fd6ff1397407a5eda","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* The existing get_volume_stats() call would have two new attributes added"},{"line_number":56,"context_line":"to its expected response object:"},{"line_number":57,"context_line":"o\t.array_status."},{"line_number":58,"context_line":"o\t.array_substatus"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_bf8d477d","line":58,"in_reply_to":"3acd31a7_9ed7e4ec","updated":"2015-05-14 19:37:57.000000000","message":"+1 for making this periodic task configurable","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"595b605cf7fc5a8fb5278eabeae26bc45145feab","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* The existing get_volume_stats() call would have two new attributes added"},{"line_number":56,"context_line":"to its expected response object:"},{"line_number":57,"context_line":"o\t.array_status."},{"line_number":58,"context_line":"o\t.array_substatus"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_39c4a05d","line":58,"in_reply_to":"3acd31a7_9ed7e4ec","updated":"2015-05-13 20:03:27.000000000","message":"What will happen if storage response time be more than periodic interval? Will it be performance impact for the storage to collect such metrics?","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1853e391d0cfefa29e8d505652811823d9ebc2b8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"the volume performance.  One downside querying this level for performance"},{"line_number":65,"context_line":"information is that it does not scale as well.  If a volume is presented to"},{"line_number":66,"context_line":"multiple nova instances then each instance would need to be checked"},{"line_number":67,"context_line":"simultaneously and the values combined which would be both."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Data model impact"},{"line_number":70,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_349ce568","line":67,"updated":"2015-04-29 18:20:57.000000000","message":"Querying nova generally scales much better than centralising all the work at the array, assuming the array even tracks this info - many don\u0027t. Most hypervisors track it as a matter of course. Tracking via nova also means that you only do work for volumes that are attached.\n\nI think that the fact that multi-attach stats are approximate can just be documented - multi-attach in a niche case","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"b01662132c4b8d238c1f161a580e941c72d5e439","unresolved":false,"context_lines":[{"line_number":70,"context_line":"-----------------"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"cinder.objects.volume will be expanded with the following properties:"},{"line_number":73,"context_line":" .performance.: {.iops_read.: 0, .iops_write.: 0, .throughput_read.: 0,"},{"line_number":74,"context_line":".throughput_write.:0, .latency_read.:0, .latency_write.:0}"},{"line_number":75,"context_line":" .vendor_health.: {.vendor_health.: .., .vendor_substatus.: ..}"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_0603f174","line":73,"updated":"2015-04-30 03:25:28.000000000","message":"Might be better to have a VolumePerformance object that you can lazy-load, similar to how VolumeType and VolumeAttachment are done today - https://review.openstack.org/#/c/177054/","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0b6b5fa6c95dc711359734758aba2db9f3e1ba01","unresolved":false,"context_lines":[{"line_number":74,"context_line":".throughput_write.:0, .latency_read.:0, .latency_write.:0}"},{"line_number":75,"context_line":" .vendor_health.: {.vendor_health.: .., .vendor_substatus.: ..}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The DB will need a schema bump to support the new attributes."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"REST API impact"},{"line_number":80,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9af37de9_38e50da8","line":77,"updated":"2015-05-10 11:26:42.000000000","message":"There\u0027s already metrics storage in openstack (via events, ceilometer and monasker being the main players), we should work with that rather than making the cinder db work harder.","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1853e391d0cfefa29e8d505652811823d9ebc2b8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* throughput_read"},{"line_number":93,"context_line":"* throughput_write"},{"line_number":94,"context_line":"* latency_read"},{"line_number":95,"context_line":"* latency_write"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"in addition to a new property .vendor_health. containing the attributes:"},{"line_number":98,"context_line":"* vendor_status"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_0f367603","line":95,"updated":"2015-04-29 18:20:57.000000000","message":"Is having a fixed list a good idea? Some arrays won\u0027t collect all of these, while others might collect more","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0b6b5fa6c95dc711359734758aba2db9f3e1ba01","unresolved":false,"context_lines":[{"line_number":260,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"Unit tests will be implemented for all changes."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Documentation Impact"},{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9af37de9_18e249a0","line":263,"updated":"2015-05-10 11:26:42.000000000","message":"Test how the code behaves if the periodic task gets stuff (add a sleep(one year) and see what happens)\n\nTest array throughput with this enabled and disabled (data throughput and control plane throughput)","commit_id":"d90d4b955688bf1b4769df69cee73083460246c2"}]}
