chore: add some cpu resource_set values as well
diff --git a/docs/resource_sets.md b/docs/resource_sets.md
index 30faa61..ec89a35 100644
--- a/docs/resource_sets.md
+++ b/docs/resource_sets.md
@@ -4,8 +4,11 @@
 
 Workaround for https://github.com/bazelbuild/bazel/issues/15187
 
-By default, Bazel allocates 1 cpu and 250M of RAM:
-https://github.com/bazelbuild/bazel/blob/058f943037e21710837eda9ca2f85b5f8538c8c5/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java#L77
+Note, this workaround only provides some fixed values for either CPU or Memory.
+
+Rule authors who are ALSO the BUILD author might know better, and can
+write custom resource_set functions for use within their own repository.
+This seems to be the use case that Google engineers imagined.
 
 
 <a id="resource_set"></a>
diff --git a/lib/resource_sets.bzl b/lib/resource_sets.bzl
index 1dae839..0207154 100644
--- a/lib/resource_sets.bzl
+++ b/lib/resource_sets.bzl
@@ -2,11 +2,16 @@
 
 Workaround for https://github.com/bazelbuild/bazel/issues/15187
 
-By default, Bazel allocates 1 cpu and 250M of RAM:
-https://github.com/bazelbuild/bazel/blob/058f943037e21710837eda9ca2f85b5f8538c8c5/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java#L77
+Note, this workaround only provides some fixed values for either CPU or Memory.
+
+Rule authors who are ALSO the BUILD author might know better, and can
+write custom resource_set functions for use within their own repository.
+This seems to be the use case that Google engineers imagined.
 """
 
 resource_set_values = [
+    "cpu_2",
+    "cpu_4",
     "default",
     "mem_512m",
     "mem_1g",
@@ -17,6 +22,12 @@
     "mem_32g",
 ]
 
+def _resource_set_cpu_2(_, __):
+    return {"cpu": 2}
+
+def _resource_set_cpu_4(_, __):
+    return {"cpu": 4}
+
 def _resource_set_mem_512m(_, __):
     return {"memory": 512}
 
@@ -40,6 +51,10 @@
 
 # buildifier: disable=function-docstring
 def resource_set(attr):
+    if attr.resource_set == "cpu_2":
+        return _resource_set_cpu_2
+    if attr.resource_set == "cpu_4":
+        return _resource_set_cpu_4
     if attr.resource_set == "default":
         return None
     if attr.resource_set == "mem_512m":
@@ -65,6 +80,7 @@
         Used with --experimental_action_resource_set to reserve more RAM/CPU, preventing Bazel overscheduling resource-intensive actions.
 
         By default, Bazel allocates 1 CPU and 250M of RAM.
+        https://github.com/bazelbuild/bazel/blob/058f943037e21710837eda9ca2f85b5f8538c8c5/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java#L77
         """,
         default = "default",
         values = resource_set_values,