Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

VFP9 sp2 bad performance on Windows 11

Status
Not open for further replies.

Dan Olsson

Programmer
Aug 6, 2002
189
SE
I have about 50 places around Sweden, all of them set up similarly. EVERYTHING is on the server and clients only have a shortcut (via a network drive) to the EXE on the server.
One client in one place was foolish enough to answer Yes when her PC wanted to "update" itself to 11. After that her PC (and only hers) became unbearably slow. Her estimate is 3 times slower.
I have done some research and it might be that W11 tries to shut down SMB1, but I imagine networking wouldn't work at all if so. Any hints would be appreciated!
 
Manni,

from telling what you did I read between the lines that you doubt the new share option is working.
Asking Do I have to use "Set-SmbShare ... -LeasingMode None" when this is what the article says you have to do is just showing your doubt once more.
To me you sound like repeatedly asking "does it work?". I can't solve your doubts, I can only show a solution to you and you have to pick it up. Only experience can solve your doubts, so I can only tell you to try it.

If you have a software that has a backend that multiple users share, then you have to have a server setup or interactively set this up with your customer to have a share that all users are configured to use. So you don't depend on such a share you will create one for the shared data.

By the headline, this is something working in Windows 10 client or server build version 1709 or later. So yes, of course this is a requirement to work and can't be used for customers still working with older environments. But notice, Manni, this is a thread about Windows 11, isn't it? That's after Window 10 build 1709 for sure, isn't it?

Chriss
 
Chris Miller said:
Of course in any application with shared data the DBFs are on a share, but removing the EXE from the share you remove the network load about it. Of course that helps.
Chris, in my case the EXE is around 750k, then I have around 10 APPs that together are about 2mb.
The APPs are only used one at a time, so as the EXE is probably easy cached locally.
In contrast, the data-folder on a typical installation is about 2GB

So IMHO the relative small network load of the EXE and APPs compared to all the data, the easier setup and updating having everything on the server, is well worth it.
 
Chriss, I think we have a misunderstanding, I don't doubt "Set-SmbShare ... -LeasingMode None" is working, I think it's ideal that MS introduced this feature to ensure compatibility with file based databases, because turning cashing times to zero was only a workaround and affected the whole system instead of just a network share, plus I don't know if other cashing mechanisms of SMB2/3 are still active. What I was asking was whether you have to apply this setting only on the server or also on the clients to make it work. It seems like this is a server-only setting, so you only have to configure it once on the server.

What I was thinking out loud was, that turning the leasing mode off could only be done by a system administrator and not by the VFP application itself, because you have to know beforehand how the network shares are configured in this specific network, whereas setting cashing times to zero using set-smbclientconfiguration on the client could be automated easily as a function shipped with the application.

If there is a question I'm still concerned about it's which one of these two approaches has more positive or negative side-effects. Some have suggested to only change these settings after certain problems occur and not not change them in general.

It would be nice if there where a working code example which can cause an "dbf error" when LeasingMode/Caching is active and if the error appears you know you have to change the network settings, instead of waiting for errors to occur and change the SMB settings afterwards.



 
I see why you thought some of this.

Bt one thing is very clear from the outset of this being a share property/feature: It is server side and only needs to be server-side and has an effect on all network access to the files in such a share.

I don't agree with the setup. I know what you mean, but then you don't think your setup to the end. If you write an application that has a shared backend, then this should always also care for the server-side setup. I see how developers might just interview users where they want to store the central database and then it's all administration from the customer to set up a share.

I'd always use my rights and also responsibility to have requirements for my software to be used the way I can guarantee it to not crash. And you can use things in a setup like powershell commmandlets. The serverside setup could also install some server-side components aside from just the dbfs, but even in a simpler case, when you only install a database backend in the form of files, why should the customer freely decide what kind of share they use if that is important for the data to stay healthy?

You have to find a means for all client installations to find the same central share, but that's a problem also if you only do clientside installations. That could be propagated to clients by the serverside setup that publishes this via a website making it available to all clients and only those clients with the same customer key or authentication, for example.

Think about the other extreme case: The installation of a database server. There your main installation is the serverside installation. But a) there is a serverside installation and b) there has to be the information where to find the server by name and which driver to use, so there c) also is a clientside installation of at least ODBC drivers, whether that is integrated into a software that does the ODBC driver installations as an aside to the application installation or whether that's separate.

I don't know, but you are the one who also makes rules about the usage of the software, it all starts with licensing, and you also will have the ability to require what is required in any other aspect than pricing and licensing. I don't even think an unwritten rule of customer treatment ever forces you to accept their setup. It's in their interest to have a stable software package and I would rather have one sell less than a customer that is foreseeable trouble until he eventually maybe get an understanding whyy my requirement is, well, a requirement.

Technicall, you don't require much with any additional share you set up, there are no limited contingents and a share has no M$ license fees attached to it, etc. you could even establish a share within a share.

Chriss
 
Chriss, I agree that the developer should demand the requirements for the setup of the server and clients. But if the application is already installed at multiple customers networks and the system administrators have already created shares etc. then it's difficult to automatically turn Leasing off using powershell, because you have to know the network shares already created. So only the administrator can do that.

I was hoping for a possiblity to automate all of this. If I create a new share the settings like LeasingMode only affect this new share and not other shares already being used, even if the shares are "overlapping" - as fas as my understanding goes.

As these SMB setting where not present when the application was written, it's not so easy to implement a fluid solution afterwards, it comes down to manuel configuration. The old approach of changing cashing times on the clients could be implemented much easier.

Regards,
Manni


 
Well, you somehow know where your DBFs are, don't you?

For existing customers the procedure can still be an update setup, that uses this knowledge to move the data to a new share location or modify the share your data is on.

It's all possible, just a matter of getting to it.

Chriss
 
Chris Miller said:
Well, you somehow know where your DBFs are, don't you?

That's right, I know where the DBFs are, but not the network share name and scope, which has been chosen by the administrator of the network.

 
You don't have to know that, you can just make the folder of the DBFs a new share.

Or, as I would do it, you require the location of the database in a setup as interview question and make a share of that folder, then move files there.

It really all boils down to this: No matter what the current situation is, you can write a setup that creates the situation you need. There is no problem with having a share within a share and even if the data folder itself is already a share, you can create a share at the same location with a new name and new properties you then know and can use in configuration to address files by UNC path names using that share name. The files are then used with that share properties.

I don't know what hinders you to do something like that, or just make it a topic with the IT department of that customer. But technically you don't need to know the current situation aside from knowing the server version. Well, and also that can be made a requirement in a setup project.



Chriss
 
All in all, a setup provides you with the necessary permissions, you can make everything you do in a setup transparent to the adinistrators that execute it, it can be an initial setup, an update setup, a client or server setup or both, you can require a Windows 2019+ server or apply the other solution ono older servers, you could do as Griff and make a setup step create a scheduled tsk doing that on repeat.

You're free to do things, and as the developer of a software, you should be capable to do everything necessary to provide your software.

And it doesn't hurt to document things for the administrators/devops or develop that to their needs.

I just see you having blockades by wrong assumptions or missing the necessary confidence to ask for what you need for your software. Fears of colliding interests with the authority of customer administrators. I don't know, if it fails on that level, does it really have to? You're not doing anything just to annoy them or to question their authority, you do it with good reasons. And they will surely not have anything against a solution provided in the form of a setup that lets them control what is done and have a technical documentation of it. And that's almost automatic, as a setup using the toolset provided from Windows - by using a installer tool like ISE or, better, Inno, you will have a log and information that will be used for deinstallation.

In the end, it'''s all a matter of negotiations.

Chriss
 
This is the code I run hourly...


Code:
@echo off

dism /online /get-featureinfo /featurename:smb1protocol | find "Status : Disabled"  && (
DISM /Online /Enable-Feature /All /FeatureName:SMB1Protocol
) || (echo SMB1 Enabled)

dism /online /get-featureinfo /featurename:SMB1Protocol-Deprecation | find "Status : Enabled" && (
DISM /Online /Disable-Feature /All /FeatureName:SMB1Protocol-Deprecation
) || (echo SMB1-Deprecation Disabled)


timeout /t 100

Regards

Griff
Keep [Smile]ing

There are 10 kinds of people in the world, those who understand binary and those who don't.

I'm trying to cut down on the use of shrieks (exclamation marks), I'm told they are !good for you.

There is no place like G28 X0 Y0 Z0
 
Griff, are you sure you wanted to post this to this old thread? I can see it's related, but at least could you give some more context?
Do you run this on the server? on clients? both? Does it help in your experience?

All I know is that SMB1 deprecation is something you can't turn off - or put the other way around SMB1 is somethign you can't establish and enable, once the client or server OS is new enough. So you'll also need to specify which Server OS version and which client Windows versions you're using.

Overall, it's something that's not advisable anyway.

Chriss
 
I got a notice that someone, Tyrtyfipol I think, had posted a new message to this thread, and read through it and just thought the code might be useful.

I run that on my client machine, it works 100% thus far (a year or so on) I don't need it on the server - it is a NAS box.
The client is running windows 10 and yes, I can still turn off the deprecation, like Windows Update though M$ does like it to
come back, so if it's enabled, I disable it.

If there was a Harry Potter magic wand that could update the millions of devices that still rely on SMB1 - NAS boxes, photocopiers,
scanners, all kinds of things, some very expensive to replace - that would be nice, but there is not - so M$ left this route in place.

Regards

Griff
Keep [Smile]ing

There are 10 kinds of people in the world, those who understand binary and those who don't.

I'm trying to cut down on the use of shrieks (exclamation marks), I'm told they are !good for you.

There is no place like G28 X0 Y0 Z0
 
Strange, I don't see any new post, yours directly follows my last post from may.

I wonder how a NAS - they usually are based on some linux system installed, would have problems with SMB when they don't support SMB2 or 3 then the client also can't use that, so there should be no need to make that setting. Anyway, if you succeed with your NAS this way, fine. But it may not help anyone using an actual Windows server.

Chriss
 
There was a post, it's been deleted, at 12:55.

Lots of kit still uses SMB1 - it's easily implemented for anything running on a linux based OS...
I can't upgrade my NAS box, and I wasn't planning to replace it... although for other reasons
(like that it doesn't auto restart after a power failure) I might change it for a RPI with a USB HDD.





Regards

Griff
Keep [Smile]ing

There are 10 kinds of people in the world, those who understand binary and those who don't.

I'm trying to cut down on the use of shrieks (exclamation marks), I'm told they are !good for you.

There is no place like G28 X0 Y0 Z0
 
I got a notice that someone, Tyrtyfipol I think, had posted a new message to this thread, and read through it and just thought the code might be useful.

Griff, I think the message you refer to contained a spammy link, which is why it appears to have been removed.

Mike


__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
There was a link on it... I didn't follow it

Regards

Griff
Keep [Smile]ing

There are 10 kinds of people in the world, those who understand binary and those who don't.

I'm trying to cut down on the use of shrieks (exclamation marks), I'm told they are !good for you.

There is no place like G28 X0 Y0 Z0
 
Thank you Mike

Regards

Griff
Keep [Smile]ing

There are 10 kinds of people in the world, those who understand binary and those who don't.

I'm trying to cut down on the use of shrieks (exclamation marks), I'm told they are !good for you.

There is no place like G28 X0 Y0 Z0
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top