diff --git a/benchmarks/discovery.py b/benchmarks/discovery.py
index 23692a6725739234b5259cf29b2508670fa496a2_YmVuY2htYXJrcy9kaXNjb3ZlcnkucHk=..71bc4a30a526ce83a44422d1f2962c435167d807_YmVuY2htYXJrcy9kaXNjb3ZlcnkucHk= 100644
--- a/benchmarks/discovery.py
+++ b/benchmarks/discovery.py
@@ -23,5 +23,18 @@
         data = data.get(self.repo_name)
         if data is None:
             raise NotImplementedError("no roles data for this partials' key")
+
+        # first revision with the command available
+        firstperfdiscorev = 'db6cace18765ded16abe0a0369dec9a7771fcdfd'
+        revset = '%s::' % firstperfdiscorev
+        # revision with a backward compatible contrib/perf.py
+        goodperfdiscorev = '39cab871e8801489fcb6022527d47607ada92fb6'
+        # perfdiscovery fails prior to 2.7
+        not_before_revset = '::3d19b81366410f8bb72dbde8969be124fe612def'
+        if self._matchrevset(not_before_revset, self.get_asv_rev()):
+            return float('nan')
+        kwargs = {}
+        if not self._matchrevset(revset, self.get_asv_rev()):
+            kwargs['perfextversion'] = goodperfdiscorev
         source = self.repo_path_from_id(data['source'])
         target = self.repo_path_from_id(data['target'])
@@ -26,6 +39,7 @@
         source = self.repo_path_from_id(data['source'])
         target = self.repo_path_from_id(data['target'])
-        return self.perfext('perfdiscovery', '--repository', source, target)
+        return self.perfext('perfdiscovery', '--repository', source, target,
+                                **kwargs)
 
 @setup_role
 class DiscoveryIdenticalTimeSuite(BaseDiscoveryTimeSuite):