Hi, loic: I saw you had published a new version(v1.0.33) of "python crush" . And then I test it used my crushmap. I am glad to tell you that the "optimize" command have worked well. when I used the following command such as: crush optimize --crushmap report.json --out-path optimized.crush --rule replicated_ruleset --pool 49 There was no error output anymore. And after that I import the optimized crushmap to my cluster, after rebalancing all the OSDs are +-0.9 over/under filled. when I used the "compare" command, there was an error in output: crush compare --rule replicated_ruleset --replication-count 2 --origin /tmp/report.json --destination optimized.crush Traceback (most recent call last): File "/usr/bin/crush", line 25, in <module> sys.exit(Ceph().main(sys.argv[1:])) File "/usr/lib64/python2.7/site-packages/crush/main.py", line 136, in main return self.constructor(argv).run() File "/usr/lib64/python2.7/site-packages/crush/compare.py", line 327, in run self.run_compare() File "/usr/lib64/python2.7/site-packages/crush/compare.py", line 332, in run_compare self.set_destination_crushmap(self.args.destination) File "/usr/lib64/python2.7/site-packages/crush/compare.py", line 59, in set_destination_crushmap d.parse(self.main.convert_to_crushmap(destination)) File "/usr/lib64/python2.7/site-packages/crush/ceph/__init__.py", line 739, in convert_to_crushmap self.set_compat_choose_args(c, crushmap, choose_args_name) File "/usr/lib64/python2.7/site-packages/crush/ceph/__init__.py", line 716, in set_compat_choose_args assert choose_args_name AssertionError After that, I got the report of my cluster and "optimize" it once again, there still have an error in output: ceph report > report.new.json crush optimize --crushmap report.json --out-path optimized.crush --rule replicated_ruleset --pool 49 [root@node-4 ~]# crush optimize --crushmap report.json --out-path optimized.crush --rule replicated_ruleset --pool 49 Traceback (most recent call last): File "/usr/bin/crush", line 25, in <module> sys.exit(Ceph().main(sys.argv[1:])) File "/usr/lib64/python2.7/site-packages/crush/main.py", line 136, in main return self.constructor(argv).run() File "/usr/lib64/python2.7/site-packages/crush/optimize.py", line 373, in run crushmap = self.main.convert_to_crushmap(self.args.crushmap) File "/usr/lib64/python2.7/site-packages/crush/ceph/__init__.py", line 731, in convert_to_crushmap self.set_analyze_args(crushmap) File "/usr/lib64/python2.7/site-packages/crush/ceph/__init__.py", line 657, in set_analyze_args compat_pool = self.get_compat_choose_args(crushmap) File "/usr/lib64/python2.7/site-packages/crush/ceph/__init__.py", line 645, in get_compat_choose_args assert 1 == len(crushmap['private']['pools']) AssertionError -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html