Re: Unintuitive scheduling results using BFQ

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/18/18 11:19 AM, Paolo Valente wrote:
> 
> 
>> Il giorno 18 dic 2018, alle ore 19:08, Jens Axboe <axboe@xxxxxxxxx> ha scritto:
>>
>> On 12/18/18 11:04 AM, Paolo Valente wrote:
>>> static bool bfq_symmetric_scenario(struct bfq_data *bfqd)
>>> {
>>> -	return !bfq_varied_queue_weights_or_active_groups(bfqd);
>>> +	/*
>>> +	 * For queue weights to differ, queue_weights_tree must contain
>>> +	 * at least two nodes.
>>> +	 */
>>> +	bool varied_queue_weights = !RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
>>> +		(bfqd->queue_weights_tree.rb_node->rb_left ||
>>> +		 bfqd->queue_weights_tree.rb_node->rb_right);
>>> +
>>> +	bool multiple_classes_busy =
>>> +		(bfqd->busy_queues[0] & bfqd->busy_queues[1]) |
>>> +		(bfqd->busy_queues[0] & bfqd->busy_queues[2]) |
>>> +		(bfqd->busy_queues[1] & bfqd->busy_queues[2]);
>>
>> I don't think this does what you want it to, looks like these should be
>> logical AND and OR.
>>
> 
> Absolutely, sorry. Fortunately, the end result is still correct :)

Is it? What if ->busy_queues[0] is 1 and ->busy_queues[1] is 2. You'd
expect the first comparison to be true, but it'd be false. Ditto for
the rest of them, of course.

-- 
Jens Axboe




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux