A memory subsystem of a system on chip, SoC, comprising: a memory controller operably connected to a credit controller, the memory controller comprising a buffer configured to store transaction requests, from one or more clients (108-1, 108-2, 108-3), to access data in one or more random access memories, RAMs, the memory controller configured to: monitor, for each client of the one or more clients (108-1, 108-2, 108-3), statistics of the transaction requests served by the memory controller, wherein the statistics comprise at least two of a number of page hits in one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or an occupancy metric that represents an inference of a respective number of credits allocated to the client based on a number of entries in the buffer used by each client of the one or more clients (108-1, 108-2, 108-3); determine, based on the statistics, whether memory throughput would be increased by increasing or decreasing a respective number of credits allocated to at least one client of the one or more clients (108-1, 108-2, 108-3); and generate, based on a determination that the memory throughput would be increased, an output signal, the output signal configured to indicate to the credit controller that the respective number of credits allocated to the at least one client of the one or more clients (108-1, 108-2, 108-3) should be increased or decreased. a memory controller operably connected to a credit controller, the memory controller comprising a buffer configured to store transaction requests, from one or more clients (108-1, 108-2, 108-3), to access data in one or more random access memories, RAMs, the memory controller configured to: monitor, for each client of the one or more clients (108-1, 108-2, 108-3), statistics of the transaction requests served by the memory controller, wherein the statistics comprise at least two of a number of page hits in one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or an occupancy metric that represents an inference of a respective number of credits allocated to the client based on a number of entries in the buffer used by each client of the one or more clients (108-1, 108-2, 108-3); determine, based on the statistics, whether memory throughput would be increased by increasing or decreasing a respective number of credits allocated to at least one client of the one or more clients (108-1, 108-2, 108-3); and generate, based on a determination that the memory throughput would be increased, an output signal, the output signal configured to indicate to the credit controller that the respective number of credits allocated to the at least one client of the one or more clients (108-1, 108-2, 108-3) should be increased or decreased. monitor, for each client of the one or more clients (108-1, 108-2, 108-3), statistics of the transaction requests served by the memory controller, wherein the statistics comprise at least two of a number of page hits in one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or an occupancy metric that represents an inference of a respective number of credits allocated to the client based on a number of entries in the buffer used by each client of the one or more clients (108-1, 108-2, 108-3); determine, based on the statistics, whether memory throughput would be increased by increasing or decreasing a respective number of credits allocated to at least one client of the one or more clients (108-1, 108-2, 108-3); and generate, based on a determination that the memory throughput would be increased, an output signal, the output signal configured to indicate to the credit controller that the respective number of credits allocated to the at least one client of the one or more clients (108-1, 108-2, 108-3) should be increased or decreased.