)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"90c46c85eb50e68b8b0e67b2388695feca6dcc84","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Using Rally to benchmark Keystone in apache, large gains are made by using multiple processes to host 6 Keystone threads each."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Single Process w/ 32 Threads:"},{"line_number":12,"context_line":"Action\tMin (sec)\tMedian (sec)\t90%ile (sec)\t95%ile (sec)\tMax (sec)\tAvg (sec)\tSuccess\tCount"},{"line_number":13,"context_line":"authenticate.keystone\t0.118\t13.694\t29.142\t30.26\t46.558\t14.251\t100.0%\t10000"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_b80950e0","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":6},"updated":"2016-03-24 20:21:20.000000000","message":"you can put the rally results into paste.openstack.org and only put the link here","commit_id":"10f6443ee9d408f1ca12880b8c1b2bef70e5535d"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"90c46c85eb50e68b8b0e67b2388695feca6dcc84","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Action\tMin (sec)\tMedian (sec)\t90%ile (sec)\t95%ile (sec)\tMax (sec)\tAvg (sec)\tSuccess\tCount"},{"line_number":21,"context_line":"authenticate.keystone\t0.304\t1.189\t1.488\t1.583\t2.552\t1.195\t100.0%\t10000"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Dropping the number of threads from 32 to 6 resulted in lower max response timing value as shown in the data.  The above was tested on a 32 logical core machine at 256 constant concurrency with python-keystone-9.0.0.0-0.20160322151832.e4c8600.el7.centos.noarch."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Id133ba5ed83fca7c75510f31eada313542031672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_d8a084a8","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":8},"updated":"2016-03-24 20:21:20.000000000","message":"you can break this line to make it more easier to read.","commit_id":"10f6443ee9d408f1ca12880b8c1b2bef70e5535d"}],"manifests/wsgi/apache.pp":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"90c46c85eb50e68b8b0e67b2388695feca6dcc84","unresolved":false,"context_lines":[{"line_number":47,"context_line":"#"},{"line_number":48,"context_line":"#   [*workers*]"},{"line_number":49,"context_line":"#     Number of WSGI workers to spawn."},{"line_number":50,"context_line":"#     Optional. Defaults to 1"},{"line_number":51,"context_line":"#"},{"line_number":52,"context_line":"#   [*ssl_cert*]"},{"line_number":53,"context_line":"#     (optional) Path to SSL certificate"}],"source_content_type":"text/x-puppet","patch_set":1,"id":"da0c15f0_b83b109c","line":50,"range":{"start_line":50,"start_character":27,"end_line":50,"end_character":28},"updated":"2016-03-24 20:21:20.000000000","message":"You need to update here with the new value.","commit_id":"10f6443ee9d408f1ca12880b8c1b2bef70e5535d"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"90c46c85eb50e68b8b0e67b2388695feca6dcc84","unresolved":false,"context_lines":[{"line_number":83,"context_line":"#"},{"line_number":84,"context_line":"#   [*threads*]"},{"line_number":85,"context_line":"#     (optional) The number of threads for the vhost."},{"line_number":86,"context_line":"#     Defaults to $::processorcount"},{"line_number":87,"context_line":"#"},{"line_number":88,"context_line":"#   [*wsgi_script_ensure*]"},{"line_number":89,"context_line":"#     (optional) File ensure parameter for wsgi scripts."}],"source_content_type":"text/x-puppet","patch_set":1,"id":"da0c15f0_18cafca1","line":86,"range":{"start_line":86,"start_character":21,"end_line":86,"end_character":35},"updated":"2016-03-24 20:21:20.000000000","message":"same here","commit_id":"10f6443ee9d408f1ca12880b8c1b2bef70e5535d"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"676a39763bf3753fb4ec617d6b33a1bec7b5665b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"#"},{"line_number":84,"context_line":"#   [*threads*]"},{"line_number":85,"context_line":"#     (optional) The number of threads for the vhost."},{"line_number":86,"context_line":"#     Defaults to 6"},{"line_number":87,"context_line":"#"},{"line_number":88,"context_line":"#   [*wsgi_script_ensure*]"},{"line_number":89,"context_line":"#     (optional) File ensure parameter for wsgi scripts."}],"source_content_type":"text/x-puppet","patch_set":2,"id":"da0c15f0_b5230405","line":86,"range":{"start_line":86,"start_character":18,"end_line":86,"end_character":19},"updated":"2016-03-25 10:28:23.000000000","message":"why it is exactly 6? Why not, for example, \n$::physicalprocessorcount? For your example, it will be 16 (i don\u0027t see big difference between 32 and 6), so may be can have average value.","commit_id":"3102df0d5d59d883b31dc5eed6eda8c84ade110f"},{"author":{"_account_id":9500,"name":"Matt Fischer","email":"matt@mattfischer.com","username":"mfisch"},"change_message_id":"d88f0ffbb63ea1e74b1bf92c56ad3fa45141911f","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  create_resources(\u0027file\u0027, $wsgi_files, merge($wsgi_file_defaults, $wsgi_file_source))"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  if $workers \u003e 32 {"},{"line_number":251,"context_line":"    $workers_real \u003d 32"},{"line_number":252,"context_line":"  } else {"},{"line_number":253,"context_line":"    $workers_real \u003d $workers"}],"source_content_type":"text/x-puppet","patch_set":6,"id":"ba0121b8_07d8cb52","line":250,"updated":"2016-03-29 04:17:54.000000000","message":"I dont really like this because it doesn\u0027t account for the ways keystone might get run. We have boxes ranging from 2CPU VMs in a lab to 32 core 256GB boxes in production. I don\u0027t really want 32 processes in the lab. If you really want to do this lets add a 2nd value called \"minimum_workers\" and let people set it.","commit_id":"b766bbc5ec2f22008d5dae991547d13407d86d1f"},{"author":{"_account_id":10061,"name":"Joe Talerico","email":"jtaleric@redhat.com","username":"rook"},"change_message_id":"3bea33c4a3e00576285359912d7db90e04c6190e","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  create_resources(\u0027file\u0027, $wsgi_files, merge($wsgi_file_defaults, $wsgi_file_source))"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  if $workers \u003e 32 {"},{"line_number":251,"context_line":"    $workers_real \u003d 32"},{"line_number":252,"context_line":"  } else {"},{"line_number":253,"context_line":"    $workers_real \u003d $workers"}],"source_content_type":"text/x-puppet","patch_set":6,"id":"ba0121b8_2645ea16","line":250,"in_reply_to":"ba0121b8_07d8cb52","updated":"2016-03-29 17:21:47.000000000","message":"Looking at what we have here, if you are in a lab with 2vcpu, $workers_real will be set to 2. _Not_ 32 as you suggest.","commit_id":"b766bbc5ec2f22008d5dae991547d13407d86d1f"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3284eda3640d80f68c81195435d561b25e45e3ac","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  create_resources(\u0027file\u0027, $wsgi_files, merge($wsgi_file_defaults, $wsgi_file_source))"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  if $workers \u003e 32 {"},{"line_number":251,"context_line":"    $workers_real \u003d 32"},{"line_number":252,"context_line":"  } else {"},{"line_number":253,"context_line":"    $workers_real \u003d $workers"}],"source_content_type":"text/x-puppet","patch_set":6,"id":"ba0121b8_a9b54d32","line":250,"in_reply_to":"ba0121b8_07d8cb52","updated":"2016-03-29 17:55:10.000000000","message":"this is a max, not a minimum, to keep from having 96 processes on a 96 core box...","commit_id":"b766bbc5ec2f22008d5dae991547d13407d86d1f"},{"author":{"_account_id":16282,"name":"YaZug","email":"jschluet@redhat.com","username":"yazug"},"change_message_id":"35e78075381ffd2cfca0feba09dfb0dbf7d09259","unresolved":false,"context_lines":[{"line_number":248,"context_line":"  create_resources(\u0027file\u0027, $wsgi_files, merge($wsgi_file_defaults, $wsgi_file_source))"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  if $workers \u003e 32 {"},{"line_number":251,"context_line":"    $workers_real \u003d 32"},{"line_number":252,"context_line":"  } else {"},{"line_number":253,"context_line":"    $workers_real \u003d $workers"},{"line_number":254,"context_line":"  }"}],"source_content_type":"text/x-puppet","patch_set":6,"id":"ba0121b8_747308e8","line":251,"updated":"2016-03-29 18:16:16.000000000","message":"Matt,\n\nAre you suggesting making the 32 a variable that is settable so that it can be tuned and stay in sync between the check and the assignment?","commit_id":"b766bbc5ec2f22008d5dae991547d13407d86d1f"},{"author":{"_account_id":7732,"name":"IvanBerezovskiy","email":"ivan.berezovskii@gmail.com","username":"iberezovskiy"},"change_message_id":"fb0efa020c083679457a8893c0312b54edf19bec","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"bab6814e_2635d5da","line":259,"updated":"2016-05-25 10:29:08.000000000","message":"I\u0027m strongly against such restrictions. Users should be able to deploy as much workers or threads as they want. Test on 32 core machine is not source of truth","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":21143,"name":"Alex Krzos","email":"akrzos@redhat.com","username":"akrzos"},"change_message_id":"7955619bfa3526dd0e5b0a83d09f877130bd4d8a","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"bab6814e_ea21a84e","line":259,"in_reply_to":"bab6814e_2635d5da","updated":"2016-05-26 00:05:32.000000000","message":"Ivan,\n\nThe code currently tunes threads by default rather than processes which leads to poor performance.  I documented this with posted results.  I would be happy to add additional results to get this merged if that is really necessary.\n\nAdam asked for cap in order to prevent exhausting database connections, thus I implemented a cap at what I believed was reasonable (32 processes).  If there is a more reasonable cap, could you elaborate and provide supporting test results?  I am not sure what you mean by \"Test on 32 core machine is not source of truth\"\n\nThanks","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"675b78e3cdd0d9145caef30398c54f355ff07ce2","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"bab6814e_f1efb4ae","line":259,"in_reply_to":"bab6814e_dc590037","updated":"2016-05-26 15:46:37.000000000","message":"++ Don\u0027t hard-set a cap really deep in the manifests here. It makes this module less generically useful. You may also have a system that legitimately benefits from \u003e 32 (or some arbitrary number), or someone may want to force massive numbers of workers, beyond \"sane\" limits for some reason.\n\nin short, don\u0027t cap it here, maybe a warning (comment) that \u003e 32 is not recommended in most scenarios?","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"e19bc875337f8401aafb08a1c5f977c62d505985","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"bab6814e_f1c5f45b","line":259,"in_reply_to":"bab6814e_dc590037","updated":"2016-05-26 15:45:49.000000000","message":"Keystone is one of many processes running. If you do 32 processes, and each starts its own pool, and each pool gets 8 connections, multiplied by each of the services, it quickly explodes. \n\n32 probably too high for an automatically configured value. THe user should be able to over ride to crank it up, but the default should probably be more like 8.\n\nSo the logic should allow the explicitly set value to override the calculated, and only the calculated value should be capped.","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":7604,"name":"Sergey Kolekonov","email":"skolekonov@mirantis.com","username":"skolekonov"},"change_message_id":"ff82e61df31305b7c9fd1e8d51627600cb49924b","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"bab6814e_dc590037","line":259,"in_reply_to":"bab6814e_ea21a84e","updated":"2016-05-26 09:07:57.000000000","message":"Agree with Ivan here. I understand that some reasonable cap makes sense, but in my opinion it should be managed on a higher orchestration level (e.x. top-level manifests), the module should allow any value, otherwise it looks like not obvious behavior","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0f4be37b599d7ae080bf5f2d0657687e8c0464b4","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    $workers_real \u003d 32"},{"line_number":257,"context_line":"  } else {"},{"line_number":258,"context_line":"    $workers_real \u003d $workers"},{"line_number":259,"context_line":"  }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"  $wsgi_daemon_process_options_main \u003d {"},{"line_number":262,"context_line":"    user         \u003d\u003e \u0027keystone\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"3aaa91ec_547e2b19","line":259,"in_reply_to":"bab6814e_f1efb4ae","updated":"2016-07-01 11:02:22.000000000","message":"fwiw, +1 on a warning","commit_id":"b97e23c3b3e1de902cb840814d1c3a4727f1c707"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cff87c790b7886ed62556bbf9992e226454614f0","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  $public_path               \u003d \u0027/\u0027,"},{"line_number":167,"context_line":"  $admin_path                \u003d \u0027/\u0027,"},{"line_number":168,"context_line":"  $ssl                       \u003d true,"},{"line_number":169,"context_line":"  $workers                   \u003d $::processorcount,"},{"line_number":170,"context_line":"  $ssl_cert                  \u003d undef,"},{"line_number":171,"context_line":"  $ssl_key                   \u003d undef,"},{"line_number":172,"context_line":"  $ssl_chain                 \u003d undef,"}],"source_content_type":"text/x-puppet","patch_set":13,"id":"5a8bc5a2_fb47c61a","line":169,"updated":"2016-09-23 17:39:58.000000000","message":"On a 96 core machine this is going to be excessive.","commit_id":"4e1321aa4888d337f5ae7166477dc719fe95b8b7"}],"spec/classes/keystone_wsgi_apache_spec.rb":[{"author":{"_account_id":16282,"name":"YaZug","email":"jschluet@redhat.com","username":"yazug"},"change_message_id":"35e78075381ffd2cfca0feba09dfb0dbf7d09259","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \u0027wsgi_daemon_process_options\u0027 \u003d\u003e {"},{"line_number":65,"context_line":"          \u0027user\u0027         \u003d\u003e \u0027keystone\u0027,"},{"line_number":66,"context_line":"          \u0027group\u0027        \u003d\u003e \u0027keystone\u0027,"},{"line_number":67,"context_line":"          \u0027processes\u0027    \u003d\u003e \u002732\u0027,"},{"line_number":68,"context_line":"          \u0027threads\u0027      \u003d\u003e \u00271\u0027,"},{"line_number":69,"context_line":"          \u0027display-name\u0027 \u003d\u003e \u0027keystone-admin\u0027,"},{"line_number":70,"context_line":"        },"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"ba0121b8_d407741a","line":67,"updated":"2016-03-29 18:16:16.000000000","message":"I\u0027m not familiar enough with wsgi_daemon, but what does specifying 32 here actually do?  Does it indicate max that should be launched or how many should always be kept around?","commit_id":"b766bbc5ec2f22008d5dae991547d13407d86d1f"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"69887080ddfda3a699fcb7afde30bc715ac9e196","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"  let :global_facts do"},{"line_number":8,"context_line":"    {"},{"line_number":9,"context_line":"      :processorcount \u003d\u003e 8,"},{"line_number":10,"context_line":"      :concat_basedir \u003d\u003e \u0027/var/lib/puppet/concat\u0027,"},{"line_number":11,"context_line":"      :fqdn           \u003d\u003e \u0027some.host.tld\u0027"},{"line_number":12,"context_line":"    }"}],"source_content_type":"text/x-ruby","patch_set":14,"id":"3a98d1f4_53678ae8","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":21},"updated":"2016-09-30 19:49:27.000000000","message":"You\u0027d need this to be os_workers for the logic below to work. Otherwise it\u0027s going to be 2 and not 8 below.","commit_id":"34547e90eaeb70b8ae8bc783d6b0d99d8f039fa8"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"69887080ddfda3a699fcb7afde30bc715ac9e196","unresolved":false,"context_lines":[{"line_number":249,"context_line":"          :public_path \u003d\u003e \u0027/endpoint/\u0027,"},{"line_number":250,"context_line":"          :admin_path  \u003d\u003e \u0027/endpoint/\u0027,"},{"line_number":251,"context_line":"          :ssl         \u003d\u003e true,"},{"line_number":252,"context_line":"          :workers     \u003d\u003e $::os_workers,"},{"line_number":253,"context_line":"        }"},{"line_number":254,"context_line":"      end"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":14,"id":"3a98d1f4_53aeaae6","line":252,"range":{"start_line":252,"start_character":26,"end_line":252,"end_character":39},"updated":"2016-09-30 19:49:27.000000000","message":"This won\u0027t work, so leave this as 37 or just remove this parameter","commit_id":"34547e90eaeb70b8ae8bc783d6b0d99d8f039fa8"}]}
