Closed dotdash closed 5 years ago
Does it continue after the build stops? This is possibly caused by TabNine picking up all the filesystem events from the build.
That's a lot of memory, a normal amount of usage is 500MB-1GB. Does it go back to a more reasonable level if you restart your editor or type TabNine::restart?
I have this issue when checking out between versions while working on Python. when the versions are very different from each other I assume TabNine is rebuilding it's DB but the CPU usage is insane making my laptop almost unusable.
It would be very convenient to have a CPU / RAM limit configuration
This is on archlinux.
Using over 3GB of memory on my machine:
I love the functionality TabNine brings, but having to uninstall until this issue is somewhat resolved 😢
@zxqfl Hey there! I was wondering if you have any updates on whether this is something you are working on, something you are currently fixing, or if this is more of a "no fix" kind of situation.
As a paying customer, I just want to know where the author stands on this!
Same issue here re: memory. 3G for a fairly small java/groovy project.
EDIT: tabnine --version
reports TabNine 1.0.10 (x86_64-unknown-linux-gnu)
.
A fairly simple, though heavy, test case for both this and #24 (they seem like the same issue to me) is OpenWrt. I did a clean checkout of current master (commit 2407b1edccc2f2d426333bd7cc1743c8e4da8dbd
) there and ran TabNine manually, asking it for one completion in the OpenWrt source directory, as follows (I pieced this together based on company-tabnine, is there API documentation somewhere?):
$ ./TabNine
{"version": "0.11.1", "request": {"Autocomplete": {"filename": "/path/to/openwrt/Makefile", "before": "hi", "after": "", "region_includes_beginning": false, "region_includes_end": false, "max_num_results": 10}}}
{"suffix_to_substitute":"hi","results":[],"promotional_message":[]}
I left it hanging there since I just needed to point it to the OpenWrt directory.
This gave me 100% CPU usage for eight seconds to start with, which is fair enough since it's indexing the whole directory for the first time. Memory usage stabilizes at around 300 megabytes (looking at the "RES" column in htop
). Then I followed up with building OpenWrt in another shell, using the default configuration because that suffices to exhibit this issue, and with eight CPU cores to make it not take forever (and nice -n19
because I wanted the rest of my system to not suffer too much):
make defconfig
nice -n19 make world -j8
For some background, OpenWrt is a Linux distribution for embedded devices — routers in particular. Its build system first builds "tools", which include basic things like tar
and sed
, then the "toolchain" i.e. gcc
and company, before it goes on to actually build the whole system.
Of TabNine, I can observe all of the following during even just the "tools" build:
strace
showing that TabNine is doing all kinds of stuff including calling inotify_add_watch
in the build_dir
directory, which I should note is under .gitignore
After the "toolchain" build completes, memory usage is at almost 2500 megabytes and user CPU time (as shown by htop
) is at about 19 minutes. Since the build has taken around 30 minutes so far, this is over 60% average CPU usage.
In the end, the entire build took me just shy of 44 minutes. At that point TabNine's CPU time stabilized at 40 minutes and memory usage at nearly 4500 megabytes. I think it's fair to call both of these "high usage". Normally at this point I'd pkill TabNine
until it bloats up again, but sometimes I've missed it until it's grown to eat so many gigabytes that it's actually causing trouble for the rest of my system.
This time I also took a look at the number of inotify watches TabNine has registered:
$ grep -c inotify /proc/27260/fdinfo/7
27118
That definitely seems incorrect. Based on this and what I saw with strace
, I'd wager that there's a bug related to processing of .gitignore
and similar files: If an entire directory is ignored, I don't think TabNine should be recursing into it and especially not adding inotify watches therein. That might be the sole cause of both the CPU and the memory usage.
Thank you for the detailed investigation and analysis. Indeed, TabNine places a watch on every subdirectory, even those which match patterns in .gitignore
. This is because the library which TabNine uses to watch directories (notify) and the library which it uses to identify ignored paths (ignore) are different.
I guess the best way to fix this issue will be for TabNine to still use ignore
, but to handle recursing into sub-directories itself, allowing it to avoid recursing into .gitignore
d directories.
PS: You can find API documentation here.
I reproduced the high memory usage when building OpenWrt. Today I released an update to TabNine which uses 0% CPU while building OpenWrt. The new behaviour is as follows:
The update is currently available to beta testers. To try it, type TabNine::become_beta_tester
, then type TabNine::version
to check you have the new version -- the new version number is 1.0.14.
If no beta testers report issues, I'll release it to all users soon.
Thanks again for investigating!
Closing for now, please re-open if the problem persists.
2.1.17 is consuming 3.3 GB of memory (and counting), ~35% CPU. Been running for an hour or so.
Can confirm, tabnine 2.1.17 with vim consumes several GB if I leave it open with a few python tabs.
Some of my python projects contains venv
directories with virtualenvs that contain quite a few python files, no idea if this related.
@zxqfl please reopen, or should I open a new bug?
Problem is persisting with TN taking 20% of my RAM at start, and can go up to soft-locking the PC after 45 minutes or so. Fortunately my Fan runs like crazy when I'm close to 100% resources used. Version 2.1.11 for VSCode.
You can switch to old version which doesn't have this problem for now. For example, I'm using vim. git clone https://github.com/zxqfl/tabnine-vim ~/.vim/bundle cd ~/.vim/bundle/tabnine-vim git checkout c20d73f3e007d4b8804c344f114eb03b5c9466a3
This version doesn't have the CPU/MEM problem for me.
I just checked top
on my development machine (v. 2.1.17):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32001 petter 20 0 20.4g 20.0g 11400 S 175.8 63.8 276:55.62 TabNine
20GB resident memory(!)
You can switch to old version which doesn't have this problem for now. For example, I'm using vim. git clone https://github.com/zxqfl/tabnine-vim ~/.vim/bundle cd ~/.vim/bundle/tabnine-vim git checkout c20d73f3e007d4b8804c344f114eb03b5c9466a3
This version doesn't have the CPU/MEM problem for me.
I'll see what I can do with VSC (sorry, not very fond of vim :p ) and keep you in touch
I can confirm that TabNine V2.1.7 is stable on VSCode and doesn't take a whole lot of resources.
TabNine 2.1.17 uses 1.5 GB of the memory at the initial. Is this the expected behaviour? Isn't it so much?
using TabNine within emacs and the company package leads to an initial memory usage of 3 GB which increases over time. I now disabled the local support and try the cloud facility
How do I downgrade to 2.1.17 with VS Code (windows WSL)
Hi! I hit an all-time record this morning:
@zxqfl could you please re-open this issue? It still seems to be a problem for a lot of people (me included).
auto completion that took roughly 10GB when perform is not cool. will try later :)
Uninstalling, it is taking 26+ GB of ram
Has anyone found a solution yet?
You can disable Tabnine local feature in Tabnine::config
TabNine::version 2.1.22 still use more than 1GB memory, any solution ?
env: Centos7+vim+TabNine
@salanhess Yes. Disable TabNine Local.
git checkout c20d73f3e007d4b8804c344f114eb03b5c9466a3
Thx very much, this version only take 500M mem!
on my ubuntu vps server, i use the vim-tabnine plugin, and today i can not connect to my vps via mosh, after reboot and testing for everything, and turns out it is tabnine which cost up to 65% memory and 74% of cpu!!!!
I try disable Local as mentions above, it's better but still cost 1.5g of men, while my vps only have 4g in total.
i love Tabnine, but seem now i can only use it in my MBP and have to uninstall from my vps.
hope this issue can be solved soom.
thanks
So you're not going to provide an option to adjust the memory usage of tabnine local so as to incentivise people to buy tabnine professional?
@jh0l Actually, the exact opposite is true:
Ok I can totally understand that then. Apologies if I seemed at all accusatory, I wasn't aware of how exactly the memory consumption works with your... neural models. I'll try upgrading then!
No worries, thanks @jh0l We have a free trial for TabNine Pro - don't forget to enter the API key you get and enable TabNine cloud. If memory consumption is high, you may choose to disable TabNine Local.
TabNine still has huuuuuge CPU usage if I am typing a lot quickly. It consistently whirrs up my laptop's fans in a few moments.
Too high memory usage on my W10 device. I disabled TabNine Local
as well.
Excessive memory usage on my Linux mint 20 machine. I am experiencing sudden crashes every two hours or so. I disabled TabNine local.
The memory usage is too high and I get BSOD. Please fix this because your extension is too useful for me. TabNine.exe takes up even more memory than Chromium!
Same here :(
I had to uninstall tabnine because of of this. I usually have more than 6 vscode project open. 6*2G = 12G.
Excessive memory usage on Windows 10 with VSCode's extension.. ~1/1.5G. I'm not experiencing any crash and BSOD but it's too heavy to use..
Why is 1GB of usage in the first place? Could we limit it like max_memory_usage = 512M or max_cpu_usage=20% keeping performance?
AI uses a lot of memory.
I really like Tabnine. It allows vscode to function like an IntelliJ-based IDE, but I can’t even press tab for autocomplete (i.e. Emmet), or manually format my code when it’s on.
same, at project start already 1gb memory, after 200 lines of code 1.5gb..
Same problem!, Tabnine uses a lot of RAM
I love the VSCode extension but it is already consuming 1.5G after 100 lines of code. I hope it will be fixed at some point.
Still an issue in 2021; using 2GB ram on a python project with a couple hundred lines of code. I'm using a mac
While working on rustc, I noticed TabNine and rls regularly consuming 100% CPU each for quite a while. I usually only notice it when I switch to a different virtual desktop when I build rustc, so it's not only while actually working in vim, but also(?) a while after I stop changing things.
Additionally, the memory usage for TabNine is huge. Currently top shows:
23316 doener 20 0 9964048 4,9g 0 S 0,0 31,2 74:41.38 TabNine
The process was started about 86 hours ago.