{ "stores": { "AC_MAIN_STORE": { "filesystem": { "content_path": "/tmp/nativelink/data-worker-test/content_path-ac", "temp_path": "/tmp/nativelink/data-worker-test/tmp_path-ac", "eviction_policy": { // 1gb. "max_bytes": 1000000000, } } }, "WORKER_FAST_SLOW_STORE": { "fast_slow": { // "fast" must be a "filesystem" store because the worker uses it to make // hardlinks on disk to a directory where the jobs are running. "fast": { "filesystem": { "content_path": "/tmp/nativelink/data-worker-test/content_path-cas", "temp_path": "/tmp/nativelink/data-worker-test/tmp_path-cas", "eviction_policy": { // 10gb. "max_bytes": 10000000000, } } }, "slow": { /// Discard data. /// This example usage has the CAS and the Worker live in the same place, /// so they share the same underlying CAS. Since workers require a fast_slow /// store, we use the fast store as our primary data store, and the slow store /// is just a noop, since there's no shared storage in this config. "noop": {} } } } }, "schedulers": { "MAIN_SCHEDULER": { "simple": { "supported_platform_properties": { "cpu_count": "minimum", "memory_kb": "minimum", "network_kbps": "minimum", "disk_read_iops": "minimum", "disk_read_bps": "minimum", "disk_write_iops": "minimum", "disk_write_bps": "minimum", "shm_size": "minimum", "gpu_count": "minimum", "gpu_model": "exact", "cpu_vendor": "exact", "cpu_arch": "exact", "cpu_model": "exact", "kernel_version": "exact", "OSFamily": "priority", "container-image": "priority", // Example of how to set which docker images are available and set // them in the platform properties. // "docker_image": "priority", } } } }, "workers": [{ "local": { "worker_api_endpoint": { "uri": "grpc://127.0.0.1:50061", }, "cas_fast_slow_store": "WORKER_FAST_SLOW_STORE", "upload_action_result": { "ac_store": "AC_MAIN_STORE", }, "work_directory": "/tmp/nativelink/work", "platform_properties": { "cpu_count": { "values": ["16"], }, "memory_kb": { "values": ["500000"], }, "network_kbps": { "values": ["100000"], }, "cpu_arch": { "values": ["x86_64"], }, "OSFamily": { "values": [""] }, "container-image": { "values": [""] }, // Example of how to set which docker images are available and set // them in the platform properties. // "docker_image": { // "query_cmd": "docker images --format {{.Repository}}:{{.Tag}}", // } } } }], "servers": [{ "name": "public", "listener": { "http": { "socket_address": "0.0.0.0:50051" } }, "services": { "cas": { "main": { "cas_store": "WORKER_FAST_SLOW_STORE" } }, "ac": { "main": { "ac_store": "AC_MAIN_STORE" } }, "execution": { "main": { "cas_store": "WORKER_FAST_SLOW_STORE", "scheduler": "MAIN_SCHEDULER", } }, "capabilities": { "main": { "remote_execution": { "scheduler": "MAIN_SCHEDULER", } } }, "bytestream": { "cas_stores": { "main": "WORKER_FAST_SLOW_STORE", } } } }, { "name": "private_workers_servers", "listener": { "http": { "socket_address": "0.0.0.0:50061" } }, "services": { "experimental_prometheus": { "path": "/metrics" }, // Note: This should be served on a different port, because it has // a different permission set than the other services. // In other words, this service is a backend api. The ones above // are a frontend api. "worker_api": { "scheduler": "MAIN_SCHEDULER", }, "admin": {}, "health": {}, } }], "global": { "max_open_files": 512 } }