-
Notifications
You must be signed in to change notification settings - Fork 0
2. Getting Started
Released Pangaea v2 source codes reflect the settings for running on a system described in the diagram below. To deploy Pangaea v2 to your system, please follow below guides at proper machine.

Base Directory: Pangaea/CXL_Agent
- Configuration - See Pangaea/CXL_Agent/cfmdatastore.json (https://github.com/SamsungDS/Pangaea/blob/main/CXL_Agent/cfmdatastore.json)
$ cat cfmdatastore.json
{
"appliance-data": {
"<Fabric1 Name>": {
"credentials": {
"username": "<User ID>",
"password": "<User Password>",
"ipAddress": "<IP Address of Fabric1>",
"port": <Port Number of Fabric1>,
"insecure": true,
"protocol": "http",
"customId": "<Fabric1 Name>"
},
"blade-data": {
"<Switch1 Name>": {
"credentials": {
"username": "<User ID>",
"password": "<User Password>",
"ipAddress": "<IP Address of Switch1>",
"port": <Port Number of Switch1>,
"protocol": "http",
"backend": "<Backend Service Name>",
"customId": "<Switch1 Name>"
},
"connection-status": "online"
}
"<Switch2 Name>": {
...
}
...
},
"connection-status": "n\\a"
},
"<Fabric2 Name>": {
...
}
...
},
"host-data": {}
}
- Configuration - See Pangaea/CXL_Agent/hostToSwitchDataStore.json (https://github.com/SamsungDS/Pangaea/blob/main/CXL_Agent/hostToSwitchDataStore.json)
- NOTE : Retrieving CXL Serial number is not supported in current version, CXL Agent must have information of all Host Servers (Worker Nodes).
$ cat hostToSwitchDataStore.json
{
"host-data": {
"<Host1 Name>": {
"Host-IP": "<IP Address of Host1>",
"Fabric-Name" : "<Connected Fabric Name>",
"Switch-Name" : "<Connected Switch Name>",
"Linked-Usp-Number" : "<Upstream Port Number of Connected Switch>",
"Cxl-Serial-Number" : "<Unique Value for Each Upstream Port of Switch>",
"Switch-IP" : "<IP Address of Connected Switch>",
"Switch-Port" : "<Port Number of Connected Switch>"
}
"<Host2 Name>": {
...
}
...
}
}
- Build
$ make generate
$ make build-service
- Run
$ make run-service
Base Directory: Pangaea/CXL_Agent/webui
- Build
$ npm install
- Run
$ npm run dev
Base Directory: Pangaea/DCMFM_Manager
- Configuration - See Pangaea/DCMFM_Manager/config/config.yml (https://github.com/SamsungDS/Pangaea/blob/main/DCMFM_Manager/config/config.yml)
$ cat config/config.yml
dcmfm:
agent_ip: <IP Address of DCMFM Agent>
monitor_ip: <IP Address of DCMFM Monitor>
manager_ip: <IP Address of DCMFM Manager>
policy:
alloc: <‘sequential’ or ‘interleave’>
cxl-agent:
agent_ip: <IP Address of CXL Agent>
- Build
$ make generate
$ make build-go
- Run
$ sudo ./DCMFM
Base Directory: Pangaea/DCMFM_Agent
- Configuration - See Pangaea/DCMFM_Agent/config/config.yml (https://github.com/SamsungDS/Pangaea/blob/main/DCMFM_Agent/config/config.yml)
$ cat config/config.yml
app:
type: ‘Monitor’
dcmfm:
agent_ip: <IP Address of DCMFM Agent>
monitor_ip: <IP Address of DCMFM Monitor>
manager_ip: <IP Address of DCMFM Manager>
policy:
free: <‘monitor’ or ‘nri’>
- Build
$ make build-go
- Run
$ sudo ./DCMFM_Agent
CXL NRI Plugin is deployed to Kubernetes Worker Nodes by helm. Please follow below guides at Kubernetes Worker Node.
Base Directory: Pangaea/CXL_NRI_Plugin
- Build CXL NRI Plugin Image and upload it to registry
$ docker build –t <Image Path of CXL NRI Plugin>:<tag> -f cmd/plugins/cxl/Dockerfile .
$ docker push <Image Path of CXL NRI Plugin>:<tag>
- Configuration - See Pangaea/CXL_NRI_Plugin/deployment/helm/cxl/values.yaml (https://github.com/SamsungDS/Pangaea/blob/main/CXL_NRI_Plugin/deployment/helm/cxl/values.yaml)
$ cat deployment/helm/cxl/values.yaml
image:
name: <Image Path of CXL NRI Plugin>
# tag, if defined will use the given image tag, otherwise Chart.AppVersion will be used
tag: <tag>
...
- Install CXL NRI Plugin by helm
$ helm install cxl deployment/helm/cxl –namespace kube-system –f deployment/helm/cxl/values.yaml
- Set label to Worker Nodes where CXL Fabric is connected to
$ kubectl label node <target node> cxl=true
Every Host Servers must have their own information in configuration files.
Base Directory: Pangaea/CXL_Agent/cmd/cxl-host
- Configuration - See Pangaea/CXL_Agent/hostToSwitchDataStore.json (https://github.com/SamsungDS/Pangaea/blob/main/CXL_Agent/hostToSwitchDataStore.json)
- NOTE : Retrieving CXL Serial number is not supported in current version, cxl-host must have its own information of Host Server (Worker Node).
// @Host1
$ cat hostToSwitchDataStore.json
{
"host-data": {
"<Host1 Name>": {
"Host-IP": "<IP Address of Host1>",
"Fabric-Name" : "<Connected Fabric Name>",
"Switch-Name" : "<Connected Switch Name>",
"Linked-Usp-Number" : "<Upstream Port Number of Connected Switch>",
"Cxl-Serial-Number" : "<Unique Value for Each Upstream Port of Switch>",
"Switch-IP" : "<IP Address of Connected Switch>",
"Switch-Port" : "<Port Number of Connected Switch>"
}
}
}
// @Host2
$ cat hostToSwitchDataStore.json
{
"host-data": {
"<Host2 Name>": {
"Host-IP": "<IP Address of Host2>",
"Fabric-Name" : "<Connected Fabric Name>",
"Switch-Name" : "<Connected Switch Name>",
"Linked-Usp-Number" : "<Upstream Port Number of Connected Switch>",
"Cxl-Serial-Number" : "<Unique Value for Each Upstream Port of Switch>",
"Switch-IP" : "<IP Address of Connected Switch>",
"Switch-Port" : "<Port Number of Connected Switch>"
}
}
}
...
- Build
$ make local
- Run
$ make run
Base Directory: Pangaea/DCMFM_Agent
- Configuration - See Pangaea/DCMFM_Agent/config/config.yml (https://github.com/SamsungDS/Pangaea/blob/main/DCMFM_Agent/config/config.yml)
$ cat config/config.yml
app:
type: ‘Agent’
dcmfm:
agent_ip: <IP Address of DCMFM Agent>
monitor_ip: <IP Address of DCMFM Monitor>
manager_ip: <IP Address of DCMFM Manager>
- Build
$ make build-go
- Run
$ sudo ./DCMFM_Agent
Please follow below instructions to utilize CXL Memory Pool for Pod execution
- Set "nodeSelector" with "cxl: true" to schedule Pod to Worker Node connected to CXL Memory Pool
- Set “memory-type.cxl.nri.io/pod” annotation; valid memory-type is "dram" or "cxl"
Below specification example requests 30GiB of Memory and sets the memory type as CXL.
apiVersion: v1
kind: Pod
metadata:
name: cxl-nri-example
annotations:
memory-type.cxl.nri.io/pod: cxl
spec:
nodeSelector:
cxl: “true”
containers:
- name: cxl-container
...
resources:
requests:
memory: “30Gi”
limits:
memory: “30Gi”