1. A non-transitory machine readable medium storing a program which when executed by at least one processing unit manages queues of a network interface card (NIC), the program comprising sets of instructions for: monitoring data traffic in a particular direction that is either ingress to or egress from the NIC; based on the monitoring of data traffic in the particular direction, specifying a first pool and assigning a first set of the queues in the NIC to the first pool, said first pool having a first set of criteria for managing data traffic through the first set of queues in the NIC; directing a first subset of the data traffic to the first set of queues in the NIC based on the first set of criteria; responsive to monitoring of data traffic in the particular direction through the first set of queues, determining that a second pool should be newly created and assigning a second set of the queues in the NIC to the second pool, said second pool having a second set of criteria for managing data traffic through the second set of queues in the NIC; directing a second subset of the data traffic in the particular direction to the second set of queues in the NIC based on the second set of criteria; and responsive to monitoring of data traffic in the particular direction through the first and second sets of queues, dynamically adjusting, based on monitoring of data traffic to or from the NIC, the number of the queues in the NIC which are assigned to the first pool in the first set of queues and/or the number of the queues in the NIC which are assigned to the second pool in the second set of queues.