 contains a pointer to the message data, and the message length. So, an IPC channel does not carry data buffers, but only pointers to them. A channel has a configurable depth, representing the BD ring size. Different channels can have different depths. A channel has a producer index, telling the index in the BD ring for the next message to be sent by the producer. A channel has a consumer index, telling the index in the BD ring for the next message to be received by the consumer. A channel is empty if the producer and consumer indexes are equal. A channel is full if the linearized difference between the producer and consumer indexes is equal to the channel depth. IPC Instance Producer Idx Consumer Idx Channel Depth Message FIGURE 5-9 Inter processor communication channel model. 196 Open Radio Access Network (O-RAN) Systems Architecture and Design The producer performs the following process for sending a message over an IPC channel: writes the data to be sent in a buffer (this step can be done by the application either independently or through an IPC API function). writes the buffer pointer and length in the BD located at the current producer index in the channel BD ring. increments the producer index. The consumer performs the following process for receiving a message over an IPC channel: reads the buffer pointer and length from the BD located at the current consumer index in the channel BD ring. increments the consumer index. reads the received data from the buffer (this step can be done by the application either independently or through an IPC API function). The consumer can poll the channels using an API function or can receive an interrupt to know on which IPC channel it received a message. Linux and processor performance tuning Modern processors all contain multiple cores where, by default, the Linux os scheduler allo- cates core (CPU) resources to processes that need them. For CU, DU, and RU use-cases that rely on aggressive U-Plane performance targets, binding application threads to CPU cores can help achi