[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <48b49493-4c82-3ed5-126f-2ea18c701242@cmss.chinamobile.com>
Date: Fri, 24 Feb 2017 10:07:55 +0800
From: Xiubo Li <lixiubo@...s.chinamobile.com>
To: Andy Grover <agrover@...hat.com>, nab@...ux-iscsi.org,
mchristi@...hat.com, shli@...nel.org
Cc: hch@....de, sheng@...ker.org, namei.unix@...il.com,
bart.vanassche@...disk.com, linux-scsi@...r.kernel.org,
target-devel@...r.kernel.org, linux-kernel@...r.kernel.org,
Jianfei Hu <hujianfei@...s.chinamobile.com>
Subject: Re: [PATCH] target/user: Add daynmic growing data area featuresupport
>> When N is bigger, the ratio will be smaller. If N >= 1, the ratio
>> will be [15/1024, 4/1024), for this the ratio 15 : 1024 will be
>> enough. But maybe some iscsi cmds has no datas, N == 0. So the ratio
>> should be bigger.
>>
>> For now we will increase the data area size to 1G, and the cmd area
>> size to 128M. The tcmu-runner should mmap() about (128M + 1G) when
>> running and the TCMU will dynamically grows the data area from 0 to
>> max 1G size.
> Cool. This is a good approach for an initial patch but this raises
> concerns about efficiently managing kernel memory usage -- the data area
> grows but never shrinks, and total possible usage increases per
> backstore. (What if there are 1000?) Any ideas how we could also improve
> these aspects of the design? (Global TCMU data area usage limit?)
Two ways in my mind:
The first:
How about by setting a threshold cmd(SHRINK cmd), something likes
the PAD cmd, to tell the userspace runner try to shrink the memories?
When the runner get the SHRINK cmd, it will try to remmap uio0's ring
buffer(?). Then the kernel will get chance to shrink the memories....
The second:
Try to extern the data area by using /dev/uio1, we could remmap the
uio1 device when need, so it will be easy to get a chance to shrink the
memories in uio1.
Maybe these are a little ugly, are there other more effective ways ?
Thanks,
BRs
Xiubo
>> The cmd area memory will be allocated through vmalloc(), and the data
>> area's blocks will be allocated individually later when needed.
>>
>>
Powered by blists - more mailing lists