)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This blueprint aims to improve alarm evaluation."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint improve-alarm-evaluation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If16ab410dda419a47f32a7c4defc767f47b11694"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_2382b84f","line":11,"updated":"2014-07-01 11:12:29.000000000","message":"Please remove this tag.\n\nIt should only be used for code patches that actually implement the blueprint.","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This blueprint aims to improve alarm evaluation."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint improve-alarm-evaluation"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If16ab410dda419a47f32a7c4defc767f47b11694"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_965f19e5","line":11,"in_reply_to":"baada198_2382b84f","updated":"2014-07-03 04:07:24.000000000","message":"thanks, Done","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"}],"specs/juno/alarm-evaluator-storage-access.rst":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6089ef45ab17c8322c4f71800d74dbc85e2778ed","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Currently, ceilometer-alarm-evaluator service evaluate alarms base on"},{"line_number":17,"context_line":"ceilometerclient, which process is inefficient, and will effect the"},{"line_number":18,"context_line":"performance of Ceilometer."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The basic process of alarm evaluation is:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5adbc538_17f8997b","line":18,"updated":"2014-05-26 12:19:42.000000000","message":"I think, the latency is more affected than the performance, when I read the BP, I see that each http call will be replaced by a direct DB call, but I don\u0027t see the number call decreased.","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"aa9adc940073f564eb6148ff2a46d61034b93923","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Currently, ceilometer-alarm-evaluator service evaluate alarms base on"},{"line_number":17,"context_line":"ceilometerclient, which process is inefficient, and will effect the"},{"line_number":18,"context_line":"performance of Ceilometer."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The basic process of alarm evaluation is:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_7c109c01","line":18,"in_reply_to":"5adbc538_17f8997b","updated":"2014-05-29 07:07:31.000000000","message":"thanks ,I will think over :)","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6089ef45ab17c8322c4f71800d74dbc85e2778ed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"storage backend (database). The current process of interaction of evaluator"},{"line_number":38,"context_line":"with storage is:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"   alarm-evaluator-\u003eceilometerclient-\u003eceilometer API-\u003estorage"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"If we use default option of evaluation_interval (60s) as the period of"},{"line_number":43,"context_line":"evaluation,evaluator will the do above process many times every minute. and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5adbc538_17ced983","line":40,"updated":"2014-05-26 12:19:42.000000000","message":"The current alarming architecture allows to use ceilometer-alarm with a unprivileged tenant/user, removing the HTTP layer will remove this feature.\n\nI don\u0027t known people using ceilometer-alarm is this ways. I\u0027m just mention it, It\u0027s not a blocker for me (if someone needs that, raise your hand :p).","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"aa9adc940073f564eb6148ff2a46d61034b93923","unresolved":false,"context_lines":[{"line_number":37,"context_line":"storage backend (database). The current process of interaction of evaluator"},{"line_number":38,"context_line":"with storage is:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"   alarm-evaluator-\u003eceilometerclient-\u003eceilometer API-\u003estorage"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"If we use default option of evaluation_interval (60s) as the period of"},{"line_number":43,"context_line":"evaluation,evaluator will the do above process many times every minute. and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_5cd76023","line":40,"in_reply_to":"5adbc538_17ced983","updated":"2014-05-29 07:07:31.000000000","message":"thanks for pointing that out, as for me, the main idea is to reduce the http requests, the interaction with keystone, etc.\nit is thoughtless :)","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6089ef45ab17c8322c4f71800d74dbc85e2778ed","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Performance/Scalability Impacts"},{"line_number":101,"context_line":"-------------------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"1. Improve the performance of alarm evaluation."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"2. Reduce reluctant http requests."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5adbc538_d741d10c","line":103,"updated":"2014-05-26 12:19:42.000000000","message":"The evaluation of alarm take the most of the time in the computation of the statistic, rather than the http exchange.\n\nI guess, this specs reduce the latency by removing the http requests but don\u0027t really improve the overall performance of the evaluation of a alarm.","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"aa9adc940073f564eb6148ff2a46d61034b93923","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Performance/Scalability Impacts"},{"line_number":101,"context_line":"-------------------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"1. Improve the performance of alarm evaluation."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"2. Reduce reluctant http requests."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_7cac1ca1","line":103,"in_reply_to":"5adbc538_d741d10c","updated":"2014-05-29 07:07:31.000000000","message":"with Nejc Saje\u0027s suggestion, I will think over and learn more idea from others :)","commit_id":"00720bdf67301c07fabd596e9ea45fba13a1015b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3817940ae9661ea6d5842d79dff5b77c16c16035","unresolved":false,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":"1. Giving \"alarm part action\" of alarm evaluation direct storage access, the"},{"line_number":52,"context_line":"   \"alarm part action\" means listing alarms, getting/setting alarm\u0027s state of"},{"line_number":53,"context_line":"   every evaluation period."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"2. Keep an alarm list cache in memory to avoid frequently indexing alarms and"},{"line_number":56,"context_line":"   getting alarm\u0027s state and setting alarm\u0027s state, for combination alarm, no"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_6e3a09e8","line":53,"updated":"2014-06-06 09:57:34.000000000","message":"As a long term strategy I think we should be trying to minimize direct storage access, not increase it. There are times when performance and latency constraints will require direct access but other times it will be the case that the right thing to do is fix those problems in the API provider.\n\nThe more direct access there is, the greater the knowledge that must be shared between subsystems. In the long term that sharing decreases flexibility and maintainability across the entire system.\n\nHowever: I don\u0027t have enough experience to say what\u0027s the right thing in this specific case, just wanted to get the comment in there.","commit_id":"d8d5f72ceb11b185216b8f234c6f27922254a770"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5bdd573909ca9bc297f2b7426e5272ff5b2695ef","unresolved":false,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":"1. Giving \"alarm part action\" of alarm evaluation direct storage access, the"},{"line_number":52,"context_line":"   \"alarm part action\" means listing alarms, getting/setting alarm\u0027s state of"},{"line_number":53,"context_line":"   every evaluation period."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"2. Keep an alarm list cache in memory to avoid frequently indexing alarms and"},{"line_number":56,"context_line":"   getting alarm\u0027s state and setting alarm\u0027s state, for combination alarm, no"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_68cad36f","line":53,"in_reply_to":"1ae5cdf2_6e3a09e8","updated":"2014-06-09 03:57:27.000000000","message":"well, you are right, actually, in this specs, allow only \"alarm part\" direct storage access, after the blueprint(https://review.openstack.org/#/c/94829/) merged, the \"alarm part\" direct storage access is reasonable.\n\nalthough the title of this specs is \"Support direct alarm_evaluator storage access\", but the exact description should be \"improve the alarm evaluation\", more detail please take a look of the \"Proposed change\" in this specs :)\n\nthanks for your suggestion, it is helpful for me :)","commit_id":"d8d5f72ceb11b185216b8f234c6f27922254a770"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   alarm-evaluator-\u003eceilometerclient-\u003eceilometer API-\u003estorage"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"If we use default option of evaluation_interval (60s) as the period of"},{"line_number":41,"context_line":"evaluation, evaluator will the do above process many times every minute. and if"},{"line_number":42,"context_line":"we have a number of alarms in our environment, the quantity will be more."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The above process of alarm evaluation will cause a large number of http request"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_23ed58c4","line":41,"updated":"2014-07-01 11:12:29.000000000","message":"\"many times every minute\" \u003d\u003d\u003e once per evaluation cycle, per alarm, surely?","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   alarm-evaluator-\u003eceilometerclient-\u003eceilometer API-\u003estorage"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"If we use default option of evaluation_interval (60s) as the period of"},{"line_number":41,"context_line":"evaluation, evaluator will the do above process many times every minute. and if"},{"line_number":42,"context_line":"we have a number of alarms in our environment, the quantity will be more."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The above process of alarm evaluation will cause a large number of http request"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_2246e423","line":41,"in_reply_to":"baada198_23ed58c4","updated":"2014-07-03 04:07:24.000000000","message":"Heah. \"many times\" is on condition that we have created many alarms :)","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":"1. Giving alarm relevant action of alarm evaluation direct storage access, that"},{"line_number":51,"context_line":"   include listing alarms, getting/setting alarm\u0027s state and recording alarm"},{"line_number":52,"context_line":"   changes of every evaluation period."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_036e9401","line":50,"updated":"2014-07-01 11:12:29.000000000","message":"If the API is bypassed, how would enforce the tenant segregation currently implemented in the API layer *above* the storage driver:\n\n  https://github.com/openstack/ceilometer/blob/master/ceilometer/api/controllers/v2.py#L282","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":"1. Giving alarm relevant action of alarm evaluation direct storage access, that"},{"line_number":51,"context_line":"   include listing alarms, getting/setting alarm\u0027s state and recording alarm"},{"line_number":52,"context_line":"   changes of every evaluation period."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_62229c02","line":50,"in_reply_to":"baada198_036e9401","updated":"2014-07-03 04:07:24.000000000","message":"IMHO, I thinks there is no concept of tenant segregation in alarm evaluation process, because:\n\n1. For now, the ceilometer alarm-evaluator use *service* tenant which is admin-role, so the acl of ceilo has no limit, actually, the ceilometer.api.controllers.v2.AlarmsController#get_all has no validation of tenant.\nhttps://github.com/openstack/ceilometer/blob/master/ceilometer/api/controllers/v2.py#L2136\n\n2. I think the alarm-evluator should evaluate all of the alarms if the alarm is enabled and ignore the tenant, because evaluator is not belong to any tenant","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"3. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_a34b28af","line":63,"updated":"2014-07-01 11:12:29.000000000","message":"Do you mean one call into the statistics API *per evaluation cycle*\n\nHow you would you account for different alarms requiring different statistics (avg versus max say), different time windows (period*eval_periods), different query constraints etc.?","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0884f91316bc71eb8c079e6391403d2bba375d09","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"3. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_bd892377","line":63,"in_reply_to":"baada198_7d1ebd64","updated":"2014-07-03 13:31:54.000000000","message":"Have you confirmed that the usual cost of a complex query is less than many small queries? If so, that\u0027s an unfortunate shortcoming in the system that perhaps we can address in other ways (that is, alongside these changes).","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"3. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_7d1ebd64","line":63,"in_reply_to":"baada198_a34b28af","updated":"2014-07-03 04:07:24.000000000","message":"1.Yes.\n\n2.For my primary idea, I propose to post one request that include a list of listing statistics request of a alarms list. this is just to reduce the API requests to 1 request per evaluation cycle. when access to db to query statistics, use one-by-one pattern, with the sample cache table (mentioned below) this is also low cost.","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"a8b84f64f8dc23b01b944ae246425a0f4eadf6ed","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"3. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_2106891d","line":63,"in_reply_to":"baada198_bd892377","updated":"2014-07-07 06:47:25.000000000","message":"the \"bulk calculating statistics\" I said is is also \"many small queries\", it simply reduce the http requests and reduce interaction between keystone middleware etc.","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"5. Add a sample cache table in DB, which record the samples in \"recent time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_23d718c3","line":65,"updated":"2014-07-01 11:12:29.000000000","message":"What\u0027s the difference between this and point #4?","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"},{"line_number":63,"context_line":"   pattern, this will greatly reduce the number of http request."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"5. Add a sample cache table in DB, which record the samples in \"recent time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_5d3659e8","line":65,"in_reply_to":"baada198_23d718c3","updated":"2014-07-03 04:07:24.000000000","message":"#4-\u003e3#, my fault.","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3113e713a873256de423bbadca7969c129ce3ed2","unresolved":false,"context_lines":[{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"5. Add a sample cache table in DB, which record the samples in \"recent time"},{"line_number":69,"context_line":"   period\" at same time when recording sample to sample table, the \"recent"},{"line_number":70,"context_line":"   time period\" means the time span of samples in sample cache table is bigger"},{"line_number":71,"context_line":"   than all alarms evaluation time span, which can be calculated by the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_43024c3f","line":68,"updated":"2014-07-01 11:12:29.000000000","message":"How would samples be selected for inclusion in this cache?","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5c8a4624ac80ab1a4938ecd48a20598db5be37f3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"4. For 4th change, ceilometer API should support \"bulk statistics\" interface,"},{"line_number":66,"context_line":"   this should be address in another blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"5. Add a sample cache table in DB, which record the samples in \"recent time"},{"line_number":69,"context_line":"   period\" at same time when recording sample to sample table, the \"recent"},{"line_number":70,"context_line":"   time period\" means the time span of samples in sample cache table is bigger"},{"line_number":71,"context_line":"   than all alarms evaluation time span, which can be calculated by the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"baada198_bdd13559","line":68,"in_reply_to":"baada198_43024c3f","updated":"2014-07-03 04:07:24.000000000","message":"This process is similar to the current statistics calculation process (db layer), because the alarm evaluation just need \"recent samples\", we don\u0027t need query samples from the huge-sample-table.","commit_id":"fd4515d1c7b048245891350b2cd20c42b084d29e"}],"specs/juno/improve-alarm-evaluation.rst":[{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"591804e0b2df01b063c002244e7afbf146377ead","unresolved":false,"context_lines":[{"line_number":56,"context_line":"   related to alarm evaluator, and evaluator need to evaluate all enabled"},{"line_number":57,"context_line":"   alarms. So the direct *db access* has no tenant segregation impact."},{"line_number":58,"context_line":"   Additionally, according to [5], the alarm part db implementation is close"},{"line_number":59,"context_line":"   to alarm evaluation in code structure."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"2. Keep an alarm list cache every evaluation cycle, the alarm list is got at"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_128083be","line":59,"updated":"2014-07-30 11:30:48.000000000","message":"I like this point and it should be simple to implement, since Mehdi already implemented the separate DB for alarms.","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8587c32f92014d58a437baebc6b0c8da05bfae94","unresolved":false,"context_lines":[{"line_number":56,"context_line":"   related to alarm evaluator, and evaluator need to evaluate all enabled"},{"line_number":57,"context_line":"   alarms. So the direct *db access* has no tenant segregation impact."},{"line_number":58,"context_line":"   Additionally, according to [5], the alarm part db implementation is close"},{"line_number":59,"context_line":"   to alarm evaluation in code structure."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"2. Keep an alarm list cache every evaluation cycle, the alarm list is got at"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_634d5771","line":59,"in_reply_to":"baada198_128083be","updated":"2014-07-31 01:46:29.000000000","message":"yeah?absolutely agree.","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8587c32f92014d58a437baebc6b0c8da05bfae94","unresolved":false,"context_lines":[{"line_number":56,"context_line":"   related to alarm evaluator, and evaluator need to evaluate all enabled"},{"line_number":57,"context_line":"   alarms. So the direct *db access* has no tenant segregation impact."},{"line_number":58,"context_line":"   Additionally, according to [5], the alarm part db implementation is close"},{"line_number":59,"context_line":"   to alarm evaluation in code structure."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"2. Keep an alarm list cache every evaluation cycle, the alarm list is got at"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_83542bff","line":59,"in_reply_to":"baada198_128083be","updated":"2014-07-31 01:46:29.000000000","message":"yeah?absolutely agree.","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"591804e0b2df01b063c002244e7afbf146377ead","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   cache."},{"line_number":69,"context_line":"   At the end of per evaluation cycle, record the alarm alarm information to"},{"line_number":70,"context_line":"   db.By this change, evaluator only need 2 calls of DB API every evaluation"},{"line_number":71,"context_line":"   cycle."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"3. Ceilometer API should support \"bulk statistics\" interface, which can allow"},{"line_number":74,"context_line":"   ceilometer API accepting a bulk of statistics request."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_724d3fc5","line":71,"updated":"2014-07-30 11:30:48.000000000","message":"Great idea to use the cached alarms in evaluating combination alarms, since we already hold all the alarms in memory!\n\nI\u0027m not so sure about the end part though, wouldn\u0027t we still need to write each alarm back to the db one at a time?","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8587c32f92014d58a437baebc6b0c8da05bfae94","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   cache."},{"line_number":69,"context_line":"   At the end of per evaluation cycle, record the alarm alarm information to"},{"line_number":70,"context_line":"   db.By this change, evaluator only need 2 calls of DB API every evaluation"},{"line_number":71,"context_line":"   cycle."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"3. Ceilometer API should support \"bulk statistics\" interface, which can allow"},{"line_number":74,"context_line":"   ceilometer API accepting a bulk of statistics request."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_e81ce67d","line":71,"in_reply_to":"baada198_724d3fc5","updated":"2014-07-31 01:46:29.000000000","message":"1. thanks :)\n\n2. Consider we have two alarm: one threshold alarm that will be evaluated, one combination alarm that will be evaluated after the threshold alarm, and the combination alarm dependent on the threshold alarm. if we write the alarm back to the db at time, the threshold alarm state will be recorded to db after evaluating and the combination will need to get the threshold alarm\u0027s state from db. this is a circuitous process, so I think it is better to record the alarm state to \"alarm list cache\" and all alarms state will be recorded to db at the end of per evaluation cycle.","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"591804e0b2df01b063c002244e7afbf146377ead","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   please note that this change is aims to reduce the http request from"},{"line_number":76,"context_line":"   evaluator, in the db layer implementation, the primary idea is querying"},{"line_number":77,"context_line":"   one by one."},{"line_number":78,"context_line":"   I personally think this should be address in another blueprint."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"4. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":81,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_52d75bc0","line":78,"updated":"2014-07-30 11:30:48.000000000","message":"You\u0027re right, this is a separate problem and it will have to be addressed in v3 API.","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8587c32f92014d58a437baebc6b0c8da05bfae94","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   please note that this change is aims to reduce the http request from"},{"line_number":76,"context_line":"   evaluator, in the db layer implementation, the primary idea is querying"},{"line_number":77,"context_line":"   one by one."},{"line_number":78,"context_line":"   I personally think this should be address in another blueprint."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"4. For threshold alarms, use \"bulk calculating statistics\" by calling"},{"line_number":81,"context_line":"   ceilometerclient every evaluation period to instead previous one-by-one"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_c30f032e","line":78,"in_reply_to":"baada198_52d75bc0","updated":"2014-07-31 01:46:29.000000000","message":"I will pay attention :)","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"591804e0b2df01b063c002244e7afbf146377ead","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   pattern, this will extremely reduce the number of http request to 1 per"},{"line_number":83,"context_line":"   evaluation cycle."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"5. This proposed change is aims to optimized the statistics calculation."},{"line_number":86,"context_line":"   Reference the ideas the wiki[2] has proposed, implementation about"},{"line_number":87,"context_line":"   \"statistics over sliding windows\", and this proposed change is a idea of"},{"line_number":88,"context_line":"   implementing the \"bulk calculating statistics\"."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_92549323","line":85,"updated":"2014-07-30 11:30:48.000000000","message":"It was actually me who put those diagrams on the wiki, but I have an alternative to point #5 that makes use of the upcoming Gnocchi at https://review.openstack.org/#/c/109581/ . It is much simpler and doesn\u0027t change the alarm evaluation semantics at all. Can you take a look at it as well?","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8587c32f92014d58a437baebc6b0c8da05bfae94","unresolved":false,"context_lines":[{"line_number":82,"context_line":"   pattern, this will extremely reduce the number of http request to 1 per"},{"line_number":83,"context_line":"   evaluation cycle."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"5. This proposed change is aims to optimized the statistics calculation."},{"line_number":86,"context_line":"   Reference the ideas the wiki[2] has proposed, implementation about"},{"line_number":87,"context_line":"   \"statistics over sliding windows\", and this proposed change is a idea of"},{"line_number":88,"context_line":"   implementing the \"bulk calculating statistics\"."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_c3d9c385","line":85,"in_reply_to":"baada198_92549323","updated":"2014-07-31 01:46:29.000000000","message":"thanks for your wiki :), I will review your spec, I am very glad to contribute to the evaluation improvement :)","commit_id":"8c0d287e0a87d2f74d8341079e811dac023d6f89"}]}
