Problemas com CACHE Windows x Arquivos/DBFs

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por fladimir »

Olá pessoal,

Tenho alguns sistemas q são DBFs/CDX e trabalho com o ACBr

Sempre tenho alguns problemas, q aparentam ser estranhos e pelo tipo de conversa, já pergunto para meu técnico... vc conferiu se o CACHE do HD esta desativado? Ai ele confere e responde q estava ATIVADO, ai após desativar para os problemas...

Isto pq o Cache do Windows atrapalha fazermos a leitura tipo IF File(...), deletar o arquivo, gravar... etc pq o CACHE meio q prende o arquivo e da um monte de problema.

Apesar do meu pessoal ser orientado a conferir, na correria do dia a dia, em clientes q estavam ok, mas ai trocou de HD ou formatou o micro ou micro novo etc, acabam esquecendo... gerando reclamação no cliente, perca de tempo da equipe técnica etc etc.

Pensei em uma forma de desativarmos o CACHE do HD via programação/sistema.


Pesquisando/fazendo testes em meu micro, ATIVANDO e DESATIVANDO o cache pude perceber q a chave q é alterada varia de HD pra HD dentro do registro do Windows e tb se o for 64 x 32.

Então antes de continuar a empreita gostaria de saber se alguém sabe alguma forma de resolver isto ou já tenha resolvido.


Caso não o q penso em fazer é:
- Via chamadas do programa q manipula o registro exportar o mesmo para um arquivo;
- Varrer o arquivo jogando num array as chaves q forem relativas ao CACHE do HD;
- Fazer testes desativando e sobrescrevendo as chaves para ver se resolve.

Bom é isso ai, continuo na batalha... abraço.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por JoséQuintas »

O Harbour tem isso pronto.
win_OsNetRegOk()

Código: Selecionar todos

FUNCTION PCFGWIN()

// Politica de controle de conta de usuario para drives mapeados (UAC) que bloqueia acesso a pastas mapeadas
// Ao que parece, ate mesmo o administrador vira usuario comum para isso
// [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]"EnableLinkedConnections"=dword:00000001
   IF win_OsNetRegOk()
      MsgExclamation( "Windows já configurado" )
   ELSE
      IF MsgYesNo( "Windows não configurado corretamente para o JPA." + hb_eol() + "Configura agora?" + hb_eol() + ;
         "Obs. Conforme versão do Windows, Só vai ser possivel configurar se JPA executado como administrador" )
         IF win_OsNetRegOk( .T., .T. )
            IF ! MsgYesNo( "Configuração necessária aplicada. Continua?" )
               QUIT
            ENDIF
         ELSE
            MsgStop( "Não foi possivel aplicar configuração." )
         ENDIF
      ENDIF
   ENDIF

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por fladimir »

Mas isso é pro CACHE do HD?
Imagem sem título.png
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por JoséQuintas »

É pra rede.
Esse que mencionou aqui nem aparece, nem mesmo pro SSD.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por fladimir »

SSD não usa, mas pra SATA normal q é a grande maioria dos HDs Desktop tem essa opção q vem por defaul ATIVADA
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por Itamar M. Lins Jr. »

Ola!
Uso DBF, nunca me preocupei com isso.
Só uso o tal "WIN_OSNETREGOK(.T.,.T.)" que vem no harbour.
DBF não tem esse problema do CACHE ai que vc informa, que eu saiba. Desativar o cache do HD deixa o sistema extremamente lento.
Isso é um problema do WINDOWS(opportunistic locking) , no Linux não tem esse problema, não precisa disso.

http://www.superbase.com/service_tech_s ... locks.html Boa leitura em inglês.

https://support.microsoft.com/en-us/hel ... windows-nt

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por fladimir »

Obrigado pela explicação, vou testar, agora uma duvida se eu habilitar essa sugestão com o CACHE do HD desativado tem algum problema?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por Jairo Maia »

Olá Pessoal,

Mas ao usar essa função, o usuário atual passa a ter privilégios de administrador. E se o cliente não quiser isso pode dar problema.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por JoséQuintas »

Pra executar essa função e fazer alterações, precisa privilégios.
Depois de alterado, normal.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por lugab »

Bom dia,

Fiquei confuso. Concluí três coisas com esse tópico:

1) Com a "diretiva de gravação em cache" habilitada, o comando DbAppend() não grava os dados no HD e sim num cachê
2) A função Win_OsNetRegOk(.T.,.T.) não trata exatamente essa questão e não se sabe ao certo o que ela faz
3) Considerando que se acessa DBFs num servidor mapeado a partir de uma estação, na prática, a função
Win_OsNetRegOk(.T.,.T.) não fará efeito nenhum na rede, seja qual for o objetivo dessa função

Concluí correto, pesssoal ??
lugab
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por Jairo Maia »

Pois é...

Mas um teste que pode ser feito é o seguinte:

1-Num computador que não tenha ainda sido rodado a Win_OsNetRegOk(.T.,.T.), saia para o prompt de comando;
2-Tente alterar a data e também a hora, você será barrado;

3-Rode a Win_OsNetRegOk(.T.,.T.);
4-Altere data e hora pelo prompt que fica liberado.

PS: Nos testes que fiz, ela apenas alterou sem pedir nada ou dar algum aviso.

O motivo de eu não ter adotado isso para permitir atualizar a data e hora via aplicativo foi essa questão, pois ela atribui privilégios de administrador, então preferi não usar. Mas como você disse, talvez falte mais informação, ou uma forma de após atualizar data e hora voltar o Windows no estado anterior.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por JoséQuintas »

É simples, só olhar o fonte pra ver o que a função faz.

https://github.com/vszakats/harbour-cor ... win_os.prg
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por Itamar M. Lins Jr. »

Ola!
E se o cliente não quiser isso pode dar problema.
Basta rodar uma vez só.
...e não se sabe ao certo o que ela faz
Se sabe sim. É só ler as explicações e olhar o fonte da tal função.
...num servidor mapeado...
Isso foi e é a principal causa do clipper/dbf ser exorcizado por gerentes de redes, mas temos o NETIO, LETODB, ADS e outros para resolver esse problema. Mapeamento = problemas, em qualquer OS. Imagine um DBF de 60Gb para lá e para cá na rede wifi ou cabeada é problema na certa. Melhor usar TS(terminal service/putty etc...)
A função é essa ai em baixo, evita de editar o registro do windows na unha.
O que eu entendo dessa função é não deixar o windows controlar o travamento/compartilhamento dos arquivos, deixa isso por conta do RDD(clipper/Harbour/Fox...) fazer o controle de acesso(flock,rlock...) porque se o windows trava/libera um DBF o nosso sistema não vai saber, uma vez que o RDD não comunica com os processos do windows, não sabe. Por isso os problemas.

Código: Selecionar todos

´/*
 * Windows OS - safe LAN networking
 *
 * Copyright 2004 Peter Rees <peter@rees.co.nz> Rees Software and Systems Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this software; see the file COPYING.txt.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307 USA (or visit the web site https://www.gnu.org/).
 *
 * As a special exception, the Harbour Project gives permission for
 * additional uses of the text contained in its release of Harbour.
 *
 * The exception is that, if you link the Harbour libraries with other
 * files to produce an executable, this does not by itself cause the
 * resulting executable to be covered by the GNU General Public License.
 * Your use of that executable is in no way restricted on account of
 * linking the Harbour library code into it.
 *
 * This exception does not however invalidate any other reasons why
 * the executable file might be covered by the GNU General Public License.
 *
 * This exception applies only to the code released by the Harbour
 * Project under the name Harbour.  If you copy code from other
 * Harbour Project or Free Software Foundation releases into a copy of
 * Harbour, as the General Public License permits, the exception does
 * not apply to the code that you add in this way.  To avoid misleading
 * anyone as to the status of such modified files, you must delete
 * this exception notice from them.
 *
 * If you write modifications of your own for Harbour, it is your choice
 * whether to permit this exception to apply to your modifications.
 * If you do not wish that, delete this exception notice.
 *
 */

/* Function to check and set Windows Registry settings
 * for safe networking - for all versions of Windows.
 *
 * Also includes check for buggy VREDIR.VXD under Win95
 * and if the correct patch file is found.
 */

#include "directry.ch"
#include "hbwin.ch"

/* NOTE: To change any of these registry settings
         Administrator rights are required by default in Windows. [vszakats] */

FUNCTION win_osNetRegOk( lSetIt, lDoVista )

   LOCAL bRetVal := .T.
   LOCAL cKeySrv
   LOCAL cKeyWks

   hb_default( @lSetIt, .F. )

   IF ! hb_defaultValue( lDoVista, .T. ) .AND. hb_osIsWinVista()
      /* do nothing */
   ELSEIF hb_osIsWin9x()
      bRetVal := win_regQuery( WIN_HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\VxD\VREDIR", "DiscardCacheOnOpen", 1, lSetIt )
   ELSE
      cKeySrv := "System\CurrentControlSet\Services\LanmanServer\Parameters"

      IF lSetIt
         lSetIt := ! hb_osIsWinNT() .OR. wapi_IsUserAnAdmin()
      ENDIF

      IF hb_osIsWin7()
         /* https://groups.google.com/forum/#!msg/harbour-users/RyjXKmlQqWw/QOYwIPS5BQAJ */
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "DisableLeasing", 1, lSetIt )
      ELSE
         cKeyWks := "System\CurrentControlSet\Services\LanmanWorkStation\Parameters"

         /* Server settings */
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "CachedOpenLimit", 0, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "EnableOpLocks", 0, lSetIt ) /* Q124916 */
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "EnableOpLockForceClose", 1, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationDelay", 0, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationRetries", 0, lSetIt )

         IF hb_osIsWinVista()
            /* If SMB2 is enabled turning off oplocks does not work, so SMB2 is required to be turned off on Server. */
            bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SMB2", 0, lSetIt )
         ENDIF

         /* Workstation settings */
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseOpportunisticLocking", 0, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "EnableOpLocks", 0, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "EnableOpLockForceClose", 1, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UtilizeNtCaching", 0, lSetIt )
         bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseLockReadUnlock", 0, lSetIt )

         IF hb_osIsWinVista()
            bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileInfoCacheLifetime", 0, lSetIt )
            bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileNotFoundCacheLifetime", 0, lSetIt )
            bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "DirectoryCacheLifetime", 0, lSetIt )
         ENDIF

         IF hb_osIsWin2K()
            bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\MRXSmb\Parameters", "OpLocksDisabled", 1, lSetIt )
         ENDIF
      ENDIF
   ENDIF

   RETURN bRetVal

FUNCTION win_osNetVRedirOk( /* @ */ nResult )

   LOCAL aFiles

   LOCAL nSize
   LOCAL cTime

   nResult := 0

   /* Check for faulty files */
   IF hb_osIsWin9x() .AND. ;
      Len( aFiles := hb_vfDirectory( hb_GetEnv( "WINDIR", "C:\WINDOWS" ) + "\SYSTEM\VREDIR.VXD" ) ) >= 1

      nSize := aFiles[ 1 ][ F_SIZE ]
      cTime := aFiles[ 1 ][ F_TIME ]

      DO CASE
      CASE nSize == 156749 .AND. cTime == "11:11:10"
         nResult := 1111
      CASE nSize == 140343 .AND. cTime == "09:50:00"
         nResult := 950
      ENDCASE
   ENDIF

   RETURN nResult == 0
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Marcio_Carneiro
Usuário Nível 2
Usuário Nível 2
Mensagens: 70
Registrado em: 07 Abr 2008 15:37
Localização: Santo Antônio de Pádua - RJ

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por Marcio_Carneiro »

Estou me deparando com isto em um único cliente.

O seu HD é SSD.

Seus arquivos principais tem o tamanho de 47 a 50 mb.

Sempre achei estranho pois se copiava um arquivo.dbf para outra pasta e abria via dbu, ás vezes não deixava executar uma função, mesmo abrindo somente no dbu, sem compartilhamento na rede,

ele acusava que o arquivo está lockado, isto é, não permitia acesso. Sempre achei estranho.

Será que se eu passar esse utilitário melhorar a perfomance?

O que os amigos recomendam?

Outra coisa estranha é que neste cliente ficam criando múltiplos arquivos, com nomes de sequencia de letras como: BGDAAOCI, BECOCIEL.

Qual seria a causa da criação destes arquivos?

Harbour, dbf com ntx, utilizando mapeamento para acessar os dados
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com CACHE Windows x Arquivos/DBFs

Mensagem por JoséQuintas »

Só lembro desse tipo de arquivo em clipper.
Tem certeza de que trocou todos os programas em Clipper?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder