A computer storage subsystem that sets a plurality of virtual machines and that provides calculation results by the plurality of virtual machines to a host computer, the computer storage subsystem comprising:
- a plurality of controller boards each which controls the storage subsystem;
- and a connection device that connects the plurality of controller boards, wherein
- each of the plurality of controller boards includes a processor that generates a virtual machine by securing hardware resources in accordance with an allocation request, and a memory that stores at least virtual machine setting information for setting the virtual machine and virtual machine management information for managing the virtual machine, wherein
- each of the plurality of controller boards includes a plurality of virtual machines,
- each memory of the plurality of controller boards comprises:
- a first fixed area for storing information shared by a plurality of virtual machines within the same controller board;
- a second fixed area for storing information shared by a plurality of virtual machines of different controller boards;
- and a dynamic pool area for storing information specific to each of the plurality of virtual machines within the same controller board,
- each memory of the plurality of controller boards stores, as the virtual machine setting information, information indicative of correspondence relationship between each function of the controller board and a portion of the first and second fixed areas to be used for the each function of the controller board, and core management information for managing utilization rates of processor cores associated with functions allocated to each processor core, and
- each processor of the plurality of controller boards allocates the first and second fixed areas for the each function of the controller board to the virtual machines to be activated based on the information indicative of the correspondence relationship, dynamically allocates a specific storage area to the virtual machine to be allocated from the dynamic pool area, and enables the plurality of virtual machines set to the same and different controller boards to cooperate and operate, wherein,
- the processor monitors utilization rates of processor cores by referencing the core management information and reconfigures distribution of the processor cores to the plurality of virtual machines based on a result of the monitoring, wherein,
- if an average utilization rate of all processor cores allocated to the same function monitored is beyond a predetermined value, the processor expands the processor cores with the function, and
- if a value of (the average utilization rate*((the number of the core processors allocated to the same function monitored −1)/(the number of the core processors allocated to the same function monitored))) is less than 1, the processor cores contracts with the function.